当html中用script包含了不在同一个目录下的js外部文件(主要是为了通用代码的重用)时,这个js文件的
内容就如同在当前html文件中了,写jquery的时候不用考虑路径问题,可以直接引用html中的选择器选择元素了。
input标签是不是一定要放在form表单中?
- input标签是form的子元素
- 表单的submit和reset相当于对话框中的“确定”“取消”“重置”等本身带有某些功能的按钮
- 当要提交包括该input的表单时,就要把该input放在表单form中
- 反之, 如果你不想提交什么表单,只想把它当作一个按钮使用,执行某个script时,
- 或者, 你用ajax来提交内容时,input标签可以不用放在form中。
ajax的load方法 返回的页面类型: 可以是html,也可以是php文件. 默认的是body>*
同样的ajax.php的路径问题, 这样看: index.js文件相当于"嵌入""包含""如同
#include"的作用, 你把html文件中包含的js文件扩展开来, 就得到ajax.php同html文件之间的相对路径关系了.
css隐藏div的两种方法区别:
display:none: 真正的消除div占用的空间
visibiliy: hidden, 也不显示,但会占用div本身的空间。
从none和hidden的字面意思也可以看出它们之间的区别
js/jquery中的对象?
原生的javascript的对象,有一种定义方法就是用大括号来定义的:
var a_js_object = {key1:"val1", key2: 100, key3:"val3"}
这也正好是json的数据格式. 也是jquery很多方法的参数所需要的类型!
从jquery的官网下载的jqueryui的版本是v1.11.4, 其自带的jquery.js的版本是v1.10.2
下载时,即使只用到某个widget,如dialog, 也要下载其他组件,因为这个dialog可能要用到/
依赖其他相关组件,如draggable droppable sortable等.
页面代码: 在保证准确/规范的前提下, 尽可能的精简.
jquery-ui.structure.css: 是关于ui的组件widget的css样式规定
border样式的推荐顺序写法:
.ui-widget-content {
border: 1px solid #dddddd; //记住这个,是jquery官方的写法.
background: #ffffff;
color: #333333;
}
如何使用jquery-ui
- jquery-ui就是通过jquery.js+css的配合使用, 来实现常见的网页组件如对话框,tab,accordion,datepicker等的效果.
- 首先得要包含jquery.js这个js core的, 因为在jquery-ui.js中就用到了jquery.js中的函数方法.
- 然后要包含jquery-ui.js这个ui的jscore文件, 因为在jquery-ui中使用的方法,如dialog(), tab() accordion()方法在jquery.js中是没有的,只有在jquery-ui.js中才有, 如
- 必须包含jquery-ui.xxx.css的样式表文件, 如果没有这些样式表, 是看不到ui的效果的!
/*!
* jQuery UI Dialog 1.11.4
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license.
* http://jquery.org/license
*
* http://api.jqueryui.com/dialog/
*/ var dialog = $.widget( "ui.dialog", {
version: "1.11.4",
options: {
appendTo: "body",
...
_createTitleBar:function(){...}
三个css文件的区别?
jquery-ui.css: 是包含了最基本的一些组件和一些background-image和icon等的样式说明;
jquery-ui.structure.css是包含了较完整的/较详细的组件, 如button, dialog, tabbable, accordion, ui-tabs, ui-tooltip等样式的说明;
jquery-ui.theme.css是包含了对主题,主要是背景图片/背景位置等的样式的说明
### 总之, jquery-ui.css是从jquery-ui.structure.css和jquery-ui.theme.css中抽取最重要/最基本的东西组成的,一般使用jquery-ui.css就可以了!
### 经过验证,和查看jqueryui的官方demo也知道, 在demo中确实只用到了一个jquery-ui.css. 其他提供的几个css文件都没有使用!
## 一般, 在同一行内只写一条完整的/具体的选择器(可能是多个selector), 但是如果有多个,即有逗号的,通常都分行写!
如:
.ui-button-text-icon-secondary .ui-button-icon-secondary,
.ui-button-text-icons .ui-button-icon-secondary,
.ui-button-icons-only .ui-button-icon-secondary {
right: .5em;
}
要去看一看jquery.js& jquery-ui.js中的源代码, 很有好处,就知道它是怎样实现的. 更重要的是: 可以学习和借鉴jqureyui.js对
jquery的使用的代码的写法本身:jquery官方的jquery代码/js代码都是很好的例子.
同一图片文件包含多个小图片/小图标的方法:
首先规定这些规则图片的大小(通常这些图片的大小 都是有规律的, 如果没有就要自己去算).
/* Icons
----------------------------------*/ /* states and images */
.ui-icon {
width: 16px;
height: 16px;
}
然后规定类/id等需要使用的url图片: background-image: url("....");
.ui-icon,
.ui-widget-content .ui-icon {
background-image: url("images/ui-icons_444444_256x240.png");
}
然后说明某个图标的位置偏移: background-position: (以向上向右为正,所以相对位置都为 "负值")
/* positioning */
.ui-icon-blank { background-position: 16px 16px; }
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
现在, 就会有一种感觉,有一种感悟: 写程序就是写英文的文章! 那样你就有感觉了,那样你写的程序
就可能有一种"优雅"的感觉了, 那么你写程序也就不会感觉那样辛苦那样痛苦, 而是一种如同写作,一种
写文章, 写散文一样的轻松了. 那么, 这时候, 你的工作, 就如同办公室/行政/官员一样的工作那样轻松愉快了.
jqueryui 的dialog的autoOpen不要被误解?
autoOpen通常应该设置成true, 而不要设置成false, 或者其默认的就是true, 可以不去设置它,不管他
autoOpen是说, 对话框在初始化的时候就显示,还是开始保持hidden, 直到显式的调用open方法才显示
而不要误解说, 对话框一开始就打开, 即使没有按"触发"按钮. 不是这样的!
autoOpen
Type: Boolean
Default: true
If set to true, the dialog will automatically open upon initialization. If false, the dialog will stay hidden until the open() method is called.
jqueryui的方法的特点
基本上, jqueryui的方法都是用一个关键字来实现的, 如dialog, 在调用属性/方法/事件等的时候, 都是
通过$("#selector").dialog("属性/方法/事件关键字 ,如 "open")")来实现的, 不是像类对象的$("#sel").open().
on和upon的区别
upon和on一般是同义的,可以互用,但是:
on和upon一般可以通用,但有以下区别:
※) 表示日期时一般只用on, 不用upon
※) 在某些习语中, upon和on 不能互相替换, 如:upon my word, once upon a time, on no account
※) 在句末或分句末的动词不定式后往往用 upon, 不用 on, 如:nothing to defend upon \
$jquery对象和dom对象之间的转换?
很简单, dom转换成jquery, 加$运算符就可以
jquery转换成dom, 取数组元素[0]就可以: $("#form")[0].reset(). 不能直接用$("#form").reset().
target的_blank和_new的区别?
_blank会始终打开新的链接目标页面
_new会在第一次打开一个新的链接目标页面, 但是以后就不会再打开了.所以用_new比_blank好.
如何在jquery中调用表单的提交和重置功能?
实际上是通过调用表单form的submit方法和reset方法
buttons: [
{
text: "登录",
click: function(){
$("#tchlogin #tchlogin-form").submit(); // 定位到该表单
$(this).dialog("destroy");
}
},
{
text: "重置",
click: function(){
$("#tchlogin #tchlogin-form")[0].reset();
}
}
]
jquery的position属性option?
position表示定位, 那么就要有两个对象, 一个是你要定位的对象, 另一个是你要相对于哪个对象来定位
my: 要定位的元素, 你当前正在操作的元素的参考点
at: 参照的目标元素上的参考点
of: 要参照的目标对象, 就是要相对定位的那个对象. 一般都有default值. 如: tooltip的of: 是the associated target element
tooltip相关联的那个目标元素. 而dialog的of默认的是当前窗口window. 但是你可以自己另外指定.
指定of的时候, 可以用: element, selector: 如of: "#some-id" , jquery对象: 如of: $("#some-id")
collision: 处理位置冲突, 有filp, fit, flipfit, none
....
什么意思呢?
是说my的参考点对应的水平位置如left,和at目标的参考点指定的水平位置如right对齐.
my的参考点对应的垂直位置如top,和at目标的参考点指定的垂直位置如bottom对齐.
还可以指定偏移. 这样,就可以让目标对象在任意位置定位!注意, 偏移offset是指在my, at对齐之后, 再进行偏移
而且, 不管是在my, 还是at后面指定偏移, 效果都是一样的: +表示定位对象相右向下偏移, 反之同理.
jquery的position和jqueryui的position方法?
前者的position方法只能获得对象"相对于父元素"的位置 var pos=$('#id').position(); alert(pos.left);
后者是jqueryui的position, 则是定位对象的:
$("#id").position({
my: "left+3, bottom-2",
of: event
});
$( document ).mousemove(function( event ) {
$( "#position4" ).position({
my: "left+3 bottom-3",
of: event,
collision: "fit"
});
$(window)和$(document)之间的区别?
http://www.jb51.net/article/21628.htm
总之, 就是$(window)是等到所有的元素(包括图片)都加载完成后,才执行.
而$(document)是只要等到dom结构图绘制完成后就执行.
通常用$(document), 只有在某些特殊的情况下, 需要等到某些图片加载完成后,才开始执行js脚本的, 用$(window).
php转义html特殊字符的函数?
htmlspecialchars: 顾名思义, 只是将几个特殊的html符号(&,单双引号, 大于小于)转换成html的实体(只有字面值), 使其没有html的元素功能
htmlentities: 顾名思义, 就是将所有的html符号都转换成实体: 如<> 转换成大于小于符号, 不再具有元素标签的意思, 转换所有的html符号,包括不能识别的中文字符...通常使用 htmlspecialchars函数就足够了
html符号转换的目的, 是为了安全, 不会构成sql注入攻击威胁.
为什么不要使用eval?
为什么不要使用eval?
绝对不要使用 eval,任何使用它的代码都会在它的工作方式,性能和安全性方面受到质疑。如果一些情况必须使用到 eval 才能正常工作,首先它的设计会受到质疑,这不应该是首选的解决方案, 一个更好的不使用 eval 的解决方案应该得到充分考虑并优先采用。
只要知道写 JavaScript 代码当使用 eval 时,存在这个问题就行,毕竟现在直接用 JavaScript 库比较多,安全性能好很多。
这是因为eval是一个能够解析js代码的函数。所以如果有人恶意在JSON的数据中插入恶意代码,比如修改表单提交的地址。
eval 也存在安全问题,因为它会执行任意传给它的代码, 在代码字符串未知或者是来自一个不信任的源时,绝对不要使用 eval 函数。
eval 一般也较慢,因为它必须调用 JS 解释器,而很多其他构造方法都被现代 JS 引擎所优化。
定时函数 setTimeout 和 setInterval 都可以接受字符串作为第一个参数。但是这个特性绝对不要使用,因为它们在内部使用了 eval。
在纯的php中要输出html和js代码, 可以直接用echo "...." echo <<<eot....eot,这样是很方便的.
php利用$_SESSION传递值?
SESSION机制: 是进程级别的, 位于服务器端. 而且对每个用户都是独立的, 互不干扰的.
使用Session变量传值是一种最常见的方式,不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失
方法是:直接用就行了
第一页:Session["UserID"]= "123";
第二页: string sUserID = (string)Session["UserID"];
如何禁止通过url直接访问某些页面, 如登录验证页面?
方法是通过$_SESSION. 中login.php页面定义$_SESSion, 然后在要避免直接url访问的页面, 通过判断$_SESSION['标识变量'] 是否设置
来禁用直接访问.
php有"全局变量"吗?
php的全局变量跟C/ C++ 中的不同!
c/C++在一个文件内, 凡是在函数的外面定义的变量, 就叫做全局变量. 这个全局变量通过extern可以扩展到多个文件域:
在多个不同的文件域之间使用.
而php的所谓的全局变量和超全局变量, 都是在一个文件域而言的. 都只能是在一个文件内来说的. 不能被多个文件所使用.文件和文件间是不能
共享/传递变量值的,因为: <font color="red">C在Link的时候会把多个obj连在一起,它知道用extern的在别的模块中,只会在link时的别的模块中找,但php是解释执行的,<strong>一次只能处理一个文件, 或者说php解释器鼠目寸光, 一次只看得到一个文件</strong>它如何知道此变量在哪个文件中定义? 不可能把机器上的.php文件全部翻出来看吧,你可以用include()或是require()把定义变量的文件包含进来.</font>
实际上, php的全局变量并不是真正的"全局"变量, 不是C语言意义上的"全局"变量.
php的全局变量是指一个php文件内, 在函数外面, 通常在文件开始部分定义的变量. 因为php的全局变量和函数内部是完全隔离的,(不像c语言)
所以要在函数内部使用外部的所谓的全局变量时,必须在函数内部声明 global $outer_var;
而超全局变量的概念, 仍然不是指页面间可以使用的变量, 是指不必使用global进行声明, 就可以在函数内部和函数外部都可以使用的变量,
通常就是指: $GLOBALS, $_POST, $_GET等等.
.
因此, 要想某个变量在所有页面内都可以使用。建议用COOKIE 或SESSION.
你用inclued或者require包含定义变量的文件,就可以使用了。
php中没有基于整个网站的全局变量,一般用数据库的替代方案:
通过在一个页面内修改变量,然后存储到数据库的某个表中
然后, 另一个页面去访问数据库的这个表中的这个变量...
这样, 就通过 数据库 的 表 中的字段起到了 中间媒介 的作用!