简单的几句jq代码和Prototype.js 冲突了

ylwqhr 2011-03-25 02:49:36
$(function(){
var milancase = $('#case > ul');
case.hide();
case.eq(0).show();
var cur = 0;
var play = function(){
if(cur == 0){
case.eq(0).fadeOut();
case.eq(1).fadeIn();
cur = 1;
}else{
case.eq(1).fadeOut();
case.eq(0).fadeIn();
cur = 0;
}
};
setInterval(play,5000);
});


就这么几句jq代码,冲突了就实现不了功能。想请大家修改成纯js的 。

有朋友帮我写的

<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(
function(){
var case= jQuery('#case> ul');
case.hide();
case.eq(0).show();
var cur = 0;
var play = function(){
if(cur == 0){
case.eq(0).fadeOut();
case.eq(1).fadeIn();
cur = 1;
}else{
case.eq(1).fadeOut();
case.eq(0).fadeIn();
cur = 0;
}
};
setInterval(play,5000);
}
)
</script>

这样不冲突了 但是,轮播一圈后,回到新的第一个的时候就不显示了,但是有链接。恨死郁闷》 请大家帮我改下。功能很简单,实现ul 轮播

...全文
315 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylwqhr 2011-03-27
  • 打赏
  • 举报
回复
风讯cms系统的prototype.js
ylwqhr 2011-03-27
  • 打赏
  • 举报
回复
我之所以说是JQ代码和prototype.js冲突的原因是当我把prototype.js移除的时候 那个功能就完全没有了问题了,但是加上后才会出问题。
Shalves 2011-03-26
  • 打赏
  • 举报
回复

var $1 = $.noConflict();
$1(...);
kaifadi 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ylwqhr 的回复:]

代码本身是没有问题的 主要是 jq代码和Prototype.js 冲突了 所以循环一圈后就不显示了
[/Quote]

既然你都这么肯定JQ代码和prototype.js冲突了,那你可以拿我这段代码做个测试,加我的那个prototype.js1.5版本的。事实说话:

<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
var $j=jQuery.noConflict();
$j(document).ready(
function(){
var cs= $j('#case> ul');
cs.hide();
cs.eq(0).show();
var cur = 0;
var play = function(){
if(cur == 0){
cs.eq(0).fadeOut();
cs.eq(1).fadeIn();
cur = 1;
}else{
cs.eq(1).fadeOut();
cs.eq(0).fadeIn();
cur = 0;
}
};
setInterval(play,2000);
}
)
</script>
<div id="case">
<ul>
<li>a</li>
<li>b</li>
</ul>
<ul>
<li>c</li>
<li>d</li>
</ul>
</div>

WhoAmI 2011-03-25
  • 打赏
  • 举报
回复
哈哈 , 还以为 就我碰到 prototype和JQ冲突的问题啦,,还有苦命的哥们啊。。。

我当时 好像 改了 JQ源代码,,然乎在 调用JQ的时候 不能用"$", 直接下jQuery,

For example: jQuery('.class').val();

Lucky
kaifadi 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ylwqhr 的回复:]

代码本身是没有问题的 主要是 jq代码和Prototype.js 冲突了 所以循环一圈后就不显示了
[/Quote]
你指的是这段冲突
var $j=jQuery.noConflict();
$j(document).ready(
function(){
var cs= $j('#case> ul');
cs.hide();
cs.eq(0).show();
var cur = 0;
var play = function(){
if(cur == 0){
cs.eq(0).fadeOut();
cs.eq(1).fadeIn();
cur = 1;
}else{
cs.eq(1).fadeOut();
cs.eq(0).fadeIn();
cur = 0;
}
};
setInterval(play,2000);
}
)
我可是明着加进了prototype.js。
下载地址:http://www.alixixi.com/Down/Code/ajax/2008/2008052893072.html
prototype.js版本1。5我用的就是这个!
如果和上面的JQ冲突,那我的怎么可能能运行起来呢?哎!

事实已经证明不是这个原因了!别再又拿JQ代码冲突的说事了!
kaifadi 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ylwqhr 的回复:]

代码本身是没有问题的 主要是 jq代码和Prototype.js 冲突了 所以循环一圈后就不显示了
[/Quote]
jQuery.noConflict()代码都把JQ库的$疲敝了,还冲突什么?应该是你自己的代码变量定义和prototype冲突了吧
既然你这么肯定是那段代码冲突了,请问我的代码也加进了prototype.js为什么没有冲突呢?
我特地去找了个prototype.js来做测试:

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
var $j=jQuery.noConflict();
$j(document).ready(
function(){
var cs= $j('#case> ul');
cs.hide();
cs.eq(0).show();
var cur = 0;
var play = function(){
if(cur == 0){
cs.eq(0).fadeOut();
cs.eq(1).fadeIn();
cur = 1;
}else{
cs.eq(1).fadeOut();
cs.eq(0).fadeIn();
cur = 0;
}
};
setInterval(play,2000);
}
)
$("div_new").style.cssText="top:"+t1+";left:"+l1;
</script>
<div id="case">
<ul>
<li>a</li>
<li>b</li>
</ul>
<ul>
<li>c</li>
<li>d</li>
</ul>
</div>

ylwqhr 2011-03-25
  • 打赏
  • 举报
回复
代码本身是没有问题的 主要是 jq代码和Prototype.js 冲突了 所以循环一圈后就不显示了
kaifadi 2011-03-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ylwqhr 的回复:]

不是变量名称的问题。现在的问题是轮播一圈后,回到新的第一个的时候就不显示了,也不循环了。
[/Quote]
问题是根本不知道你的UL部分到底是什么,我的简单UL部分ABCD不就一直可以轮循吗。如果你有测试的话,就知道了,IE/FF都没有问题,而如果换成你的UL部分HTML代码,就不行了,那问题就是UL代码部分,如果你又不把UL部分发出来,怎么解决呢。让大家用猜测的方法猜你的UL是什么吗?晕了!
ylwqhr 2011-03-25
  • 打赏
  • 举报
回复
不是变量名称的问题。现在的问题是轮播一圈后,回到新的第一个的时候就不显示了,也不循环了。
kaifadi 2011-03-25
  • 打赏
  • 举报
回复

<script type="text/javascript" src="jq.js"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(
function(){
var cs= jQuery('#case> ul');
cs.hide();
cs.eq(0).show();
var cur = 0;
var play = function(){
if(cur == 0){
cs.eq(0).fadeOut();
cs.eq(1).fadeIn();
cur = 1;
}else{
cs.eq(1).fadeOut();
cs.eq(0).fadeIn();
cur = 0;
}
};
setInterval(play,5000);
}
)
</script>
<div id="case">
<ul>
<li>a</li>
<li>b</li>
</ul>
<ul>
<li>c</li>
<li>d</li>
</ul>
</div>

试试看,改了一下变量名称!
Jquery是继prototype之后又一个优秀的Javascrīpt框架。它是轻量级的js库(压缩后只有21k) ,它兼容CSS3,还兼容各种浏览器 (IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。 目录 简介 找到你了! Jquery对象 代替body标签的onload 事件机制 同一函数实现get\set ajax 渐入淡出 plugin 历史版本 1、新的事件.on() .off() 3、动画的改进 1.42版介绍 JQuery插件 让Dreamweaver支持提示代码功能 引入JQuery简介 找到你了! Jquery对象 代替body标签的onload 事件机制 同一函数实现get\set ajax 渐入淡出 plugin历史版本1、新的事件.on() .off()3、动画的改进1.42版介绍JQuery插件让Dreamweaver支持提示代码功能引入JQuery展开编辑本段简介   jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多javascript高手加入其team,包括来自德国的Jörn Zaefferer,罗马尼亚的Stefan Petre等等。jQuery是继prototype之后又一个优秀的Javascrīpt框架。其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情。   由于目前高校基本尚未开JavaScript的相关课程,目前jQuery的学习,使用,研究都仅限于在职Web程序员之间。   用jq的前提,首先要引用一个有jq的文件   [removed][removed]   这个是jquery官方最新的地址。可用在自己网站里加个这个,就能使用jquery了。 但仍然建议下载到本地服务器上。 编辑本段找到你了!   在编写js代码时候,你一定经常和“$”美元符号打交道吧?无论prototype还是DWR都使用了$代替频繁的document.getElementById()操作。jQuery也这样做了,但是,它的功能远非如此,瞧瞧以下的jQuery代码,你就会发现它的美丽:   代码   var someElement = $("#myId");   看起来比其他两个框架的要多了一个#,好,看看下面的用法:   代码   $("div p"); // (1)   $("div.container"); // (2)   $("div #msg"); // (3)   $("table a",context); // (4)   在prototype里看过这样的写法吗?第一行代码得到所有div标签下的p元素。第二行代码得到class 为container的div元素,第三行代码得到标签下面id为msg的div元素(不过最好别这样写,因为jQuery需要遍历所有的div元素,对于带id的元素,直接用$("#id"))。第四行代码得到context为上下文的table里面所有的链接元素。   如果你熟悉CSS,你会觉得这些写法很眼熟!对了。正是。看出奥妙了吧。jQuery就是如此强大,你可以轻易地找到DOM中的任何元素,而这也是jQuery设计之初query的真实含义(查询)。 编辑本段Jquery对象   jquery提供了很多便利的函数,如each(fn),但是使用这些函数的前提是:你使用的对象是Jquery对象。使一个Dom对象成为一个Jquery对象很简单,通过下面一些方式(只是一部分):   代码   var a = $("#cid");   var b = $("

hello

");   var c = document.createElement("table");   var tb = $(c); 编辑本段代替body标签的onload   这个惯例,也许是除了$()之外,用得最多的地方了。下面一段代码:   代码   $(document).ready(function(){   alert("hello");   });(1)   <body>(2)   <body>这里的alert('hello');要等到页面全部加载完毕才执行,注意是全部加载,包括dom,图片等其它资源。   而$(document).ready(function(){   alert("hello");   });(1)   当dom加载完就可以执行了。   代码1同时做到表现和逻辑分离。并且可以在不同的js文件中做相同的操作,即$(document).ready (fn)可以在一个页面中重复出现,而不会冲突。基本上Jquery的很多plugin都是利用这个特性,正因为这个特性,多个plugin共同使用起来,在初始化时不会发生冲突。   当使用jquery时,推荐使用代码1。 编辑本段事件机制   我们大量使用的事件可能就是button的onclick了。以前习惯在input 元素上写onclick = "fn()",使用jquery可以使javascrīpt代码与html代码分离,保持HTML的清洁,还可以很轻松地绑定事件,甚至你可以不知道“事件”这个名词。   代码   $(document).ready(function()   {   $("#clear").click(function(){   alert("i am about to clear the table");   });   $("form[12]").submit(validate);   });   function validate(){   //do some form validation   } 编辑本段同一函数实现get\set   代码   $("selector").load(url,data,function(response,status,xhr))   该方法是最简单的从服务器获取数据的方法。它几乎与 $.get(url, data, success) 等价,不同的是它不是全局函数,并且它拥有隐式的回调函数。当侦测到成功的响应时(比如,当 textStatus 为 "success" 或 "notmodified" 时),.load() 将匹配元素的 HTML 内容设置为返回的数据。这意味着该方法的大多数使用会非常简单。 编辑本段ajax   这是一个ajax横行的时代。多少人,了不了解ajax的都跟着用上一把。呵。使用jquery实现ajax同样异常简单   代码   (1)   $.get("search. do",{id:1},rend);   function rend(xml){   alert(xml);   }   (2)   $.post("search. do",{id:1},rend);   function rend(xml){   alert(xml);   }   (3)   $("#msg").ajaxStart(function(){   this.html("正在加载。。。。");   });   (4)   $("#msg").ajaxSuccess(function(){   this.html("加载完成!");   });   这些都是较常用的方法,get和post用法一样。第一个参数是异步请求的url,第二个为参数,第三个回调方法。   (4)的方法会在指定的Dom对象上绑定响应ajax执行的事件。   (5)同步加载数据。发送请求时锁住浏览器。需要锁定用户交互操作时使用同步方式。   var html = $.ajax({   url: "some.php",   async: false   }).responseText;   (6) 保存数据到服务器,成功时显示信息。   $.ajax({   type: "POST",   url: "some.php",   data: "name=John&location=Boston",   success: function(msg){   alert( "Data Saved: " + msg );   }   }); 编辑本段渐入淡出   代码   $("#msg").show("fast");   $("#msg").hide("slow");   $("#msg").fadeIn();   $("#msg").fadeOut();   没错,上面两行代码已经分别实现了一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一样的动态加载通知条,用jquery就那么简单。两个函数接受的参数除了快慢等,还可以接收整型,作为渐入或淡出的完成时间,单位为MS。 编辑本段plugin   这也是一个插件的时代。   jquery插件给我的感觉清一色的清洁,简单。如Jtip,要使用它的功能,只需要在你的元素的class上加上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好,很精彩的插件。   写得很烂。可能大家看不出jquery的好处。嗯,光听是没用的,试用一下吧。你会发觉很有趣。   暂时告一段落吧。待有新的发现再来分享。   加一些Jquery的资源:   http://www.visualjquery. com/index.xml 很好的API查询站点   http://jquery. com/demo/thickbox/ 知道lightBox吧,看看Jquery是怎样实现相同的东西   http://jquery. org. cn/visual/cn/index.xml //不错的JQUERY 中文学习 推荐   微软的visual studio 2008 sp1支持对jquery的动态提示,只要在代码页导入对应的vsdoc脚本就可以。   目前为止,jQuery的最新版本为1.7.2。 编辑本段历史版本   jQuery 1.0(2006年8月):该库的第一个稳定版本,已经具有了对CSS选择符、事件处理和AJAX交互的稳健支持。   jQuery 1.1(2007年1月):这一版大幅简化了API。许多较少使用的方法被合并,减少了需要掌握和解释的方法数量。   jQuery 1.1.3(2007年7月):这次小版本变化包含了对jQuery选择符引擎执行速度的显著提升。从这个版本开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。   jQuery 1.2(2007年9月):这一版去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够支持对效果的更灵活定制,而且借助新增的命名空间事件,也使插件开发变得更容易。   jQuery UI(2007年9月):这个新的插件套件是作为曾经流行但已过时的Interface插件的替代项目而发布的。jQuery UI中包含大量预定义好的部件(widget),以及一组用于构建高级元素(例如可拖放的界面元素)的工具。   jQuery 1.2.6(2008年5月):这一版主要是将Brandon Aaron开发的流行的Dimensions插件的功能移植到了核心库中。   jQuery 1.3(2009年1月):这一版使用了全新的选择符引擎Sizzle,库的性能也因此有了极大提升。这一版正式支持事件委托特性。   jQuery 1.3.2(2009年2月):这次小版本升级进一步提升了库的性能,例如改进了:visible/:hidden选择符、.height()/.width()方法的底层处理机制。另外,也支持查询的元素按文档顺序返回。   jQuery 1.4(2010年1月14号对)代码库进行了内部重写组织,开始建立一些风格规范。老的core.js文件被分为attribute.js, css.js, data.js, manipulation.js, traversing.js和queue.js;CSS和attribute的逻辑分离。   jQuery 1.5(2011年1月31日):该版本修复了83个bug,解决了460个问题。重大改进有:重写了Ajax模块;新增延缓对像(Deferred Objects);jQuery替身——jQuery.sub();增强了遍历相邻节点的性能;jQuery开发团队构建系统的改进。   1.4重要新特性:   ·常用方法的性能大幅提升:重写了大部分较早期的函数;   ·更容易使用的设置函数(setter function):为所有对象新增了许多易用的设置函数;   ·对Ajax的改进:引入了许多Ajax和JSON处理方面的更新,包括HTML5元素的序列化;   ·attribute(改进了.attr()的性能)、jQuery()核心函数、CSS(.css()性能有两倍提升)、特效和事件、DOM操作等也有显著改进   1.5   美国时间1月31日John Resig在jQuery官方博客发表文章,宣布jQuery 1.5正式版已经如期开发完成,可以下载使用。压缩版本jQuery Minified29KB,不压缩版本jQuery Regular(用于阅读和调试)207KB。由于jQuery已经成为目前最流行的JavaScript库,得到广泛的支持,新版本的发布当然非常引人注目。   重要变化:   1. Ajax重写Ajax模块完全进行了重写。新增一个jXHR对象,为不同浏览器内置的XMLHttpRequest提供了一致的超集。对于XMLHttpRequest之外的传输机制,比如JSONP请求,jXHR对象也可以进行处理。(详情可以参见:jQuery.ajax文档)   此外,系统的可扩展性大大增强,可以附加各种数据处理器、过滤器和传输机制,为开发新的Ajax插件提供了方便。   2. 延迟对象   延迟对象(Deferred Object,jQuery.Deferred对象)是一个可链接的(chainable)实用工具对象,实现了Promise接口,可以在回调队列中注册多个回调、调用回调队列并转发任何同步/异步函数的成败状态。正如Using Deferreds in jQuery 1.5一文中说明的,其结果是在jQuery中能够将依赖于某个任务(事件)结果的逻辑与任务本身解耦了。这一点在JavaScript中其实并不新鲜,Mochikit和Dojo等已经实现有些日子了。由于jQuery 1.5的Ajax模块内置使用了延迟对象,因此现在通过jQuery编写Ajax程序将自动获得这一功能。   开发人员借此可以使用无法立即获得的返回值(如异步Ajax请求的返回结果),而且第一次能够附加多个事件处理器。   例如,使用了新的jQuery内部Ajax API就可以实现下面的代码了:   // Assign handlers immediately after making the request, // and remember the jxhr object for this request var jxhr = $.ajax({ url: "example.php" }) .success(function() { alert("success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); });// perform other work here ... // Set another completion function for the request above jxhr.complete(function(){ alert("second complete"); });   此外,使用jQuery.Deferred还可以开发自己的延迟对象。更多详情参见:延迟对象文档。   3. jQuery.sub()   jQuery 1.5提供了一种创建和修改jQuery副本的方式。可以用来添加不向外部公开的方法,或者对jQuery的某些方法进行重新定义以提供新功能,或者提供更好的封装、避免名称空间冲突。当然,也可以用来开发插件,但Resig强烈建议在开发插件之前,先考虑jQuery UI widget工厂。   值得注意的是,sub函数并不提供真正的隔离,所有方法、数据、调用仍然依靠jQuery本身来支持。   4. 遍历性能提高   在新版本中.children(), .pre(), .next()几个常用的遍历函数性能有了显著提高。   5. 内部开发系统   John Resig还特别提到了jQuery团队内部开发系统的两点改变:一是服务器端用Node.js替换了老的Java/Rhino系统,使得团队可以专注于JavaScript环境的新变化;二是所用的代码优化程序从Google Closure切换到UglifyJS,新工具的压缩效果非常令人满意。   有意思的是,此前UglifyJS开发者曾经公布过自己的测试结果,表明对jQuery的压缩结果UglifyJS要比Closure略大(都在72KB左右),但运行速度快得多,而且Closure不太安全。看来,这段时间UglifyJS的进展也很快啊。   jQuery 1.5.2 在1.5的基础上修正的大量的bug   1,7b   2011年09月29日jQuery 1.7 的第一个 beta 测试版本,该版本修复了超过 50 个的问题以及带来一些新特性。   2011年11月-04日jQuery1.7正式版发布。    新版本包含了很多新的特征,特别提升了事件委派时的性能尤其是在IE7下。   新增及改进项:   1. 新的事件 APIs: .on() and .off();   2. 提升了事件委派时的性能有了大幅度的提升,尤其是在IE7下;   3. 更好的在 IE 6/7/8 上支持 HTML5;   4. 切换动画更加直观;   5. 匿名模块定义 AWD   6. jQuery.Deferred   7. jQuery.isNumeric()   被删除的方法:   event.layerX and event.layerY   jQuery.isNaN()   2012年03月24日jQuery 1.7.2正式版发布。    该版本在1.7.1的基础上修复了大量的bug,并改进了部分功能。而相比于1.7.2 RC1,只修复了一个bug。值得注意的是:如果你正在使用jQuery Mobile,请使用最新的jQuery 1.7.2和jQuery Mobile 1.1这两个版本,因为之前的jQuery Mobile版本还基于jQuery core 1.7.1或更早的版本。 编辑本段1、新的事件.on() .off()   旧的 API(jQuery 1.7之前) 新的 API(jQuery 1.7) $(elems).bind(events, fn) $(elems).on(events, fn) $(elems).bind(events, { mydata: 42 }, fn) $(elems).on(events, { mydata: 42 }, fn) $(elems).unbind(events, fn) $(elems).off(events, fn) $(elems).delegate(events, selector, fn) $(elems).on(events, selector, fn) $(elems).undelegate(events, selector, fn) $(elems).off(events, selector, fn) $(selector).live(events, fn) $(document).on(events, selector, fn) $(selector).die(events, fn) $(document).off(events, selector, fn) 编辑本段3、动画的改进   在jQuery 1.7版之前,如果你在完成前停止动画,它可以创建的情况下被动画的元素永远不会返回到其全尺寸,它基本上停留在高度,这是停止动画时。 我们记住的原始尺寸固定,动画开始之前,让他们以后可以使用。 这消除了一大烦恼,尤其是在使用一定的动画切换的。 编辑本段1.42版介绍   jQuer1.4.2版本修复了1.4版本的一些错误和优化了一些不错的改进,速度比1.4.1版本又提升 了一倍,该版本对性能做了一些改进,同时增加了一些api ( .delegate() and .undelegate(). ),右图是JQuery各个版本的性能比较:   jquery1.42新特性:   加了两个新方法:.delegate() 和.undelegate(). 是对.live() and .die() 的补充. 这两个方法对特定的事件的起到简化。   范例:   $("table").delegate("td", "hover", function(){ $(this).toggleClass("hover"); });   等于使用 .live():   $("table").each(function(){ $("td", this).live("hover", function(){ $(this).toggleClass("hover"); }); });   另外,以下代码中,.live() 基本上等同于 .delegate().   $(document).delegate("td", "hover", function(){ $(this).toggleClass("hover"); });   变更   大量代码进行了重写, 提升了性能及修正了一些长期存在的问题。   提升性能   每次开发新的jquery版本,我们都努力去持续优化性能,以保证你能用到最高性能的javascript代码。   在Taskspeed benchmark 的测试中,1.4.2比1.4.1快1倍,比1.3.2快2倍。   主要是在下面4个方面进行了提升:   .bind() 和 .unbind().   .empty(), .remove(), 和 .html().   插入单个DOM 节点到 document.   $("body")   在测试用例中,比较多的用到了 $("body"), .bind(), .unbind()方法,因此测试结果提升比较明显。   v重写事件   event handlers 不再作为一个对象属性保存在 jQuery的内部对象里。现在是保存在一个内部的对象数组里。v 现在可以通过调用.data("events") , 将会返回一个对象包含的所有事件类型。   现在可以使用不同的数据、命名空间、事件类型绑定在同一个handler   在一个handler清除自己之后,事件handler会继续执行   不用关联数据或者命名空间到事件handler   不用再使用代理方法   事件执行的顺序在所有浏览器中得到保证,Google Chrome 中出现的对象循环逻辑问题已经得到解决. 编辑本段JQuery插件   【基础】   a)样式   很 多人会认为样式是个很复杂的东西,需要沉着冷静的心态加上非凡的审美观才能设计出赏心悦目的UI,抛开图片设计不说,其实css也就是那么些属 性:position,margin,padding,width,height,left,top,float,border,background…   UI设计的漂亮与否在很大程度上依赖于设计人员对配色的把握和整体效果的协调。   b)脚本   我们同样需要对javascript有着深刻的理解,对dom, xhr, Regex, call-apply, prototype等都应该有一定的了解。   有人会说要这些有啥用啊,对dom的操作其实通过getElementById, getElementsByTagName以及其他的API都可以轻松的完成,这话是没错,当思路确定后,思想才是重点,一段代码是精华还是糟粕很容易就 可以区分出来,究其原因还是取决你自己   【实践】   jQuery开发或使用,更多的灵感是来自实践,而不是copy||paste(奉行拿来主义的同学可以离开了)。   那么在这里我会用一个简单的例子来阐述jQuery插件开发的流程,能否举一反三就看各位看官了。   【目的】   开发一个插件之前我们需要对自己的目的有一个清醒的认识,有很明确的方向感,那么此次我作为示例插件的目的,就是呈现一个用于UI的Slider – 滑动条,常年从事于或暂时专注于win32开发的同学应该比较了解。   【草图】   真正动手编码之前我们还需要有一个草图来描述自己插件的“长相”(事件驱动或API封装的可以忽略)。   很多的同学在做UI开发前往往会忙于搜集各种小图片(非精通ps或iconworkshop人士),其实漂亮的图标的确可以美化我们的UI,不过我一般的处理方式是编写易于扩展的css,前期的UI呈现尽量少使用图片,多用线条完成。   【编码】   开发jQuery UI/Effect 插件在很多时候都需要与UI交互,因此在呈现上需要提供Html tree来绘制我们的插件,最终通过js dom来输出,那么在绘制简单的dom结构的时候我会直接用js来完成,不过如果嵌套比较复杂的话,我们还是应该先用html来完成,然后转变成js输 出。   【扩展】   有的时候用户却不是那么容易满足,于是有人高呼:“我要自己设置value,为什么不提供这个功能?”。   那么这时我们就需要为用户公开一个方法,用于设置jSlider的value,首先考虑的是作为方法需要一个作用对象(jSlider),那么此时我又不 想将作用对象作为参数传入,那么我们还是将这个方法作为插件来开发,我们将方法命名为setSliderValue,开放2个参数,v(value值)和 callback(设置完成后的回调函数)。   【插件】   其实网上已经有成百上千种插件了,应该可以满足大家的需求了。   【小结】   通篇到这里就结束了,简单的介绍了一款jQuery插件的开发流程,以及开发中应该注意的细节,那么在下一篇的文章中我会向大家介绍如何打造一个通用型的 自动完成 插件。 编辑本段让Dreamweaver支持提示代码功能   要让Dreamweaver支持jQuery自动提示代码功能,方法很简单,下载一个插件—jQuery_API.mxp,以及cs4的jQuery语法提示插件 (详细步骤见参考资料 [1])。 在Dreamweaver里依次选择“命令” -> “扩展管理” -> “安装扩展” -> …,就会自动安装了。   成功后重启Dreamweaver,就大功告成了。 编辑本段引入JQuery   在head标签内加入这个 [removed][removed]   这里的src是你的jQuery库文件的位置,可以到jquery官网下载。   这样就引入了jquery,就可以使用了。在代码中,遇到$一般就表示用了jquery。为什么要说一般呢?因为除了jquery,javascript还有一个库,用的也是$符(property库)。   jquery也给出了在遇到这种情况的解决办法,所以jquery是个很强大、开放、友好的js库。   下面举例:   [removed]   $(document).ready(function(){   //write your code here   })   [removed]   上面代码中$(document).ready(function()中的$就是jquery的简写,可以用jquery代替。这个ready函数是在DOM就绪后发生,他比传统的javascript方法更合理。   jquery在选取节点方面非常强大,jquery有一系列的选择器可供使用,非常简洁、高效。   基本选择器(3种):   $("标签名"),如$("p")是选取了所有的p标签节点   $("#id名"),如$("#test")是选取了id为test的标签节点   $(".class名"),如$(".test")是选取了所有class为test的标签节点   上面的$("标签名")和$(".class名")返回的都是所有满足的节点,至于进一步筛选可以添加一些函数,如eq,gt,lt等等。    当然,jquery还有很多选择器
jQuery详细教程,讲解很透彻, 一. jQuery 语法实例 $(this).hide() 演示 jQuery hide() 函数,隐藏当前的 HTML 元素。 $("#test").hide() 演示 jQuery hide() 函数,隐藏 id="test" 的元素。 $("p").hide() 演示 jQuery hide() 函数,隐藏所有 元素。 $(".test").hide() 演示 jQuery hide() 函数,隐藏所有 class="test" 的元素。 jQuery 语法 jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。 基础语法是:$(selector).action() • 美元符号定义 jQuery • 选择符(selector)“查询”和“查找” HTML 元素 • jQuery 的 action() 执行对元素的操作 示例 $(this).hide() - 隐藏当前元素 $("p").hide() - 隐藏所有段落 $("p.test").hide() - 隐藏所有 class="test" 的段落 $("#test").hide() - 隐藏所有 id="test" 的元素 提示:jQuery 使用的语法是 XPath 与 CSS 选择器语法的组合。在本教程接下来的章节,您将学习到更多有关选择器的语法。 文档就绪函数 您也许已经注意到在我们的实例中的所有 jQuery 函数位于一个 document ready 函数中: $(document).ready(function(){ --- jQuery functions go here ---- }); 这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。 二. jQuery 选择器 在前面的章节中,我们展示了一些有关如何选取 HTML 元素的实例。 关键点是学习 jQuery 选择器是如何准确地选取您希望应用效果的元素。 jQuery 元素选择器和属性选择器允许您通过标签名、属性名或内容对 HTML 元素进行选择。 选择器允许您对 HTML 元素组或单个元素进行操作。 在 HTML DOM 术语中: 选择器允许您对 DOM 元素组或单个 DOM 节点进行操作。 jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素。 $("p") 选取 元素。 $("p.intro") 选取所有 class="intro" 的 元素。 $("p#demo") 选取 id="demo" 的第一个 元素。 jQuery 属性选择器 jQuery 使用 XPath 表达式来选择带有给定属性的元素。 $("[href]") 选取所有带有 href 属性的元素。 $("[href='#']") 选取所有带有 href 值等于 "#" 的元素。 $("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。 $("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。 jQuery CSS 选择器 jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。 下面的例子把所有 p 元素的背景颜色更改为红色: 实例 $("p").css("background-color","red"); 更多的选择器实例 语法 描述 $(this) 当前 HTML 元素 $("p") 所有 元素 $("p.intro") 所有 class="intro" 的 元素 $(".intro") 所有 class="intro" 的元素 $("#intro") id="intro" 的第一个元素 $("ul li:first") 每个 的第一个 元素 $("[href$='.jpg']") 所有带有以 ".jpg" 结尾的属性值的 href 属性 $("div#intro .head") id="intro" 的 元素中的所有 class="head" 的元素 三. jQuery 事件函数 jQuery 事件处理方法是 jQuery 中的核心函数。 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法。术语由事件“触发”(或“激发”)经常会被使用。 通常会把 jQuery 代码放到 部分的事件处理方法中: 实例 $(document).ready(function(){ $("button").click(function(){ $("p").hide(); }); }); This is a heading This is a paragraph. This is another paragraph. Click me 亲自试一试 在上面的例子中,当按钮的点击事件被触发时会调用一个函数: $("button").click(function() {..some code... } ) 该方法隐藏所有 元素: $("p").hide(); 单独文件中的函数 如果您的网站包含许多页面,并且您希望您的 jQuery 函数易于维护,那么请把您的 jQuery 函数放到独立的 .js 文件中。 当我们在教程中演示 jQuery 时,会将函数直接添加到 部分中。不过,把它们放到一个单独的文件中会更好,就像这样(通过 src 属性来引用文件): 实例 jQuery 名称冲突 jQuery 使用 $ 符号作为 jQuery 的简介方式。 某些其他 JavaScript 库中的函数(比如 Prototype)同样使用 $ 符号。 jQuery 使用名为 noConflict() 的方法来解决该问题。 var jq=jQuery.noConflict(),帮助您使用自己的名称(比如 jq)来代替 $ 符号。 亲自试一试 结论 由于 jQuery 是为处理 HTML 事件而特别设计的,那么当您遵循以下原则时,您的代码会更恰当且更易维护: • 把所有 jQuery 代码置于事件处理函数中 • 把所有事件处理函数置于文档就绪事件处理器中 • 把 jQuery 代码置于单独的 .js 文件中 • 如果存在名称冲突,则重命名 jQuery 库 jQuery 事件 下面是 jQuery 中事件方法的一些例子: Event 函数 绑定函数至 $(document).ready(function) 将函数绑定到文档的就绪事件(当文档完成加载时) $(selector).click(function) 触发或将函数绑定到被选元素的点击事件 $(selector).dblclick(function) 触发或将函数绑定到被选元素的双击事件 $(selector).focus(function) 触发或将函数绑定到被选元素的获得焦点事件 $(selector).mouseover(function) 触发或将函数绑定到被选元素的鼠标悬停事件 四. jQuery实例 jQuery hide() 演示简单jQuery hide() 函数。 $(document).ready(function(){ $("p").click(function(){ $(this).hide(); }); }); If you click on me, I will disappear. jQuery hide() 另一个 hide() 演示。如何隐藏部分文本。 $(document).ready(function(){ $(".ex .hide").click(function(){ $(this).parents(".ex").hide("slow"); }); }); div.ex { background-color:#e5eecc; padding:7px; border:solid 1px #c3c3c3; } Island Trading Hide me Contact: Helen Bennett Garden House Crowther Way London Paris Trading Hide me Contact: Marie Bertrand 265, Boulevard Charonne Paris jQuery slideToggle() 演示简单的 slide panel 效果 $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideToggle("slow"); }); }); div.panel,p.flip { margin:0px; padding:5px; text-align:center; background:#e5eecc; border:solid 1px #c3c3c3; } div.panel { height:120px; display:none; } W3School - 领先的 Web 技术教程站点 在 W3School,你可以找到你所需要的所有网站建设教程。 请点击这里 jQuery fadeTo() 演示简单jQuery fadeTo() 函数。 $(document).ready(function(){ $("button").click(function(){ $("div").fadeTo("slow",0.25); }); }); 点击这里查看淡出效果 jQuery animate() 演示简单jQuery animate() 函数。 $(document).ready(function(){ $("#start").click(function(){ $("#box").animate({height:300},"slow"); $("#box").animate({width:300},"slow"); $("#box").animate({height:100},"slow"); $("#box").animate({width:100},"slow"); }); }); Start Animation jQuery 隐藏和显示 通过 hide() 和 show() 两个函数,jQuery 支持对 HTML 元素的隐藏和显示: 实例 $("#hide").click(function(){ $("p").hide(); }); $("#show").click(function(){ $("p").show(); }); 亲自试一试 $(document).ready(function(){ $("#hide").click(function(){ $("p").hide(); }); $("#show").click(function(){ $("p").show(); }); }); 如果点击“隐藏”按钮,我就会消失。 隐藏 显示 hide() 和 show() 都可以设置两个可选参数:speed 和 callback。 语法: $(selector).hide(speed,callback) $(selector).show(speed,callback) speed 参数规定显示或隐藏的速度。可以设置这些值:"slow", "fast", "normal" 或毫秒。 callback 参数是在 hide 或 show 函数完成之后被执行的函数名称。您将在本教程下面的章节学习更多有关 callback 参数的知识。 实例 $("button").click(function(){ $("p").hide(1000); }); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").hide(1000); }); }); 隐藏 This is a paragraph with little content. This is another small paragraph. jQuery 切换 jQuery toggle() 函数使用 show() 或 hide() 函数来切换 HTML 元素的可见状态。 隐藏显示的元素,显示隐藏的元素。 语法: $(selector).toggle(speed,callback) speed 参数可以设置这些值:"slow", "fast", "normal" 或 毫秒。 实例 $("button").click(function(){ $("p").toggle(); }); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").toggle(); }); }); 切换 This is a paragraph with little content. This is another small paragraph. callback 参数是在该函数完成之后被执行的函数名称。您将在本教程下面的章节学习更多有关 callback 参数的知识。 jQuery 滑动函数 - slideDown, slideUp, slideToggle jQuery 拥有以下滑动函数: $(selector).slideDown(speed,callback) $(selector).slideUp(speed,callback) $(selector).slideToggle(speed,callback) speed 参数可以设置这些值:"slow", "fast", "normal" 或毫秒。 callback 参数是在该函数完成之后被执行的函数名称。您将在本教程下面的章节学习更多有关 callback 参数的知识。 slideDown() 实例 $(".flip").click(function(){ $(".panel").slideDown(); }); 亲自试一试 $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideDown("slow"); }); }); div.panel,p.flip { margin:0px; padding:5px; text-align:center; background:#e5eecc; border:solid 1px #c3c3c3; } div.panel { height:120px; display:none; } W3School - 领先的 Web 技术教程站点 在 W3School,你可以找到你所需要的所有网站建设教程。 请点击这里 slideUp() 实例 $(".flip").click(function(){ $(".panel").slideUp() }) 亲自试一试 $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideUp("slow"); }); }); div.panel,p.flip { margin:0px; padding:5px; text-align:center; background:#e5eecc; border:solid 1px #c3c3c3; } div.panel { height:120px; } W3School - 领先的 Web 技术教程站点 在 W3School,你可以找到你所需要的所有网站建设教程。 请点击这里 slideToggle() 实例 $(".flip").click(function(){ $(".panel").slideToggle(); }); 亲自试一试 $(document).ready(function(){ $(".flip").click(function(){ $(".panel").slideToggle("slow"); }); }); div.panel,p.flip { margin:0px; padding:5px; text-align:center; background:#e5eecc; border:solid 1px #c3c3c3; } div.panel { height:120px; display:none; } W3School - 领先的 Web 技术教程站点 在 W3School,你可以找到你所需要的所有网站建设教程。 请点击这里 jQuery Fade 函数 - fadeIn(), fadeOut(), fadeTo() jQuery 拥有以下 fade 函数: $(selector).fadeIn(speed,callback) $(selector).fadeOut(speed,callback) $(selector).fadeTo(speed,opacity,callback) speed 参数可以设置这些值:"slow", "fast", "normal" 或 毫秒。 fadeTo() 函数中的 opacity 参数规定减弱到给定的不透明度。 callback 参数是在该函数完成之后被执行的函数名称。您将在本教程下面的章节学习更多有关 callback 参数的知识。 fadeTo() 实例 $("button").click(function(){ $("div").fadeTo("slow",0.25); }); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("div").fadeTo("slow",0.25); }); }); 点击这里查看淡出效果 fadeOut() 实例 $("button").click(function(){ $("div").fadeOut(4000); }); 亲自试一试 $(document).ready(function(){ $("#test").click(function(){ $(this).fadeOut(4000); }); }); CLICK ME AWAY! 如果您点击上面的框,它会淡出直到消失为止。 jQuery 自定义动画 jQuery 函数创建自定义动画的语法: $(selector).animate({params},[duration],[easing],[callback]) 关键的参数是 params。它定义产生动画的 CSS 属性。可以同时设置多个此类属性: animate({width:"70%",opacity:0.4,marginLeft:"0.6in",fontSize:"3em"}); 第二个参数是 duration。它定义用来应用到动画的时间。它设置的值是:"slow", "fast", "normal" 或毫秒。 实例 1 $(document).ready(function(){ $("#start").click(function(){ $("#box").animate({height:300},"slow"); $("#box").animate({width:300},"slow"); $("#box").animate({height:100},"slow"); $("#box").animate({width:100},"slow"); }); }); 亲自试一试 $(document).ready(function(){ $("#start").click(function(){ $("#box").animate({height:300},"slow"); $("#box").animate({width:300},"slow"); $("#box").animate({height:100},"slow"); $("#box").animate({width:100},"slow"); }); }); Start Animation 实例 2 $(document).ready(function(){ $("#start").click(function(){ $("#box").animate({left:"100px"},"slow"); $("#box").animate({fontSize:"3em"},"slow"); }); }); 亲自试一试 $(document).ready(function(){ $("#start").click(function(){ $("#box").animate({left:"100px"},"slow"); $("#box").animate({fontSize:"3em"},"slow"); }); }); Start Animation HELLO HTML 元素默认是静态定位,且无法移动。 如需使元素可以移动,请把 CSS 的 position 设置为 relative 或 absolute。 jQuery 效果 - 来自本页 函数 描述 $(selector).hide() 隐藏被选元素 $(selector).show() 显示被选元素 $(selector).toggle() 切换(在隐藏与显示之间)被选元素 $(selector).slideDown() 向下滑动(显示)被选元素 $(selector).slideUp() 向上滑动(隐藏)被选元素 $(selector).slideToggle() 对被选元素切换向上滑动和向下滑动 $(selector).fadeIn() 淡入被选元素 $(selector).fadeOut() 淡出被选元素 $(selector).fadeTo() 把被选元素淡出为给定的不透明度 $(selector).animate() 对被选元素执行自定义动画 五. JQuery Callback 函数 jQuery 动画的问题 许多 jQuery 函数涉及动画。这些函数也许会将 speed 或 duration 作为可选参数。 例子:$("p").hide("slow") speed 或 duration 参数可以设置许多不同的值,比如 "slow", "fast", "normal" 或毫秒。 实例 $("button").click(function(){ $("p").hide(1000); }); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").hide(1000); }); }); 隐藏 This is a paragraph with little content. This is another small paragraph. 由于 JavaScript 语句(指令)是逐一执行的 - 按照次序,动画之后的语句可能会产生错误或页面冲突,因为动画还没有完成。 为了避免这个情况,您可以以参数的形式添加 Callback 函数。 jQuery Callback 函数 当动画 100% 完成后,即调用 Callback 函数。 典型的语法: $(selector).hide(speed,callback) callback 参数是一个在 hide 操作完成后被执行的函数。 错误(没有 callback) $("p").hide(1000); alert("The paragraph is now hidden"); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").hide(2000); alert("The paragraph is now hidden"); }); }); Hide This is a paragraph with little content. 正确(有 callback) $("p").hide(1000,function(){ alert("The paragraph is now hidden"); }); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").hide(1000,function(){ alert("The paragraph is now hidden"); }); }); }); Hide This is a paragraph with little content. 六. jQuery 包含很多供改变和操作 HTML 的强大函数。 改变 HTML 内容 语法 $(selector).html(content) html() 函数改变所匹配的 HTML 元素的内容(innerHTML)。 实例 $("p").html("W3School"); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").html("W3School"); }); }); This is a heading This is a paragraph. This is another paragraph. 请点击这里 添加 HTML 内容 语法 $(selector).append(content) append() 函数向所匹配的 HTML 元素内部追加内容。 语法 $(selector).prepend(content) prepend() 函数向所匹配的 HTML 元素内部预置(Prepend)内容。 实例 $("p").append(" W3School"); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").append(" W3School."); }); }); This is a heading This is a paragraph. This is another paragraph. 请点击这里 语法 $(selector).after(content) after() 函数在所有匹配的元素之后插入 HTML 内容。 语法 $(selector).before(content) before() 函数在所有匹配的元素之前插入 HTML 内容。 实例 $("p").after(" W3School."); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").after(" W3School."); }); }); This is a heading This is a paragraph. This is another paragraph. 请点击这里 jQuery HTML 操作 - 来自本页 函数 描述 $(selector).html(content) 改变被选元素的(内部)HTML $(selector).append(content) 向被选元素的(内部)HTML 追加内容 $(selector).prepend(content) 向被选元素的(内部)HTML “预置”(Prepend)内容 $(selector).after(content) 在被选元素之后添加 HTML $(selector).before(content) 在被选元素之前添加 HTML 七. jQuery CSS 操作 jQuery 拥有三种用于 CSS 操作的重要函数: • $(selector).css(name,value) • $(selector).css({properties}) • $(selector).css(name) CSS 操作实例 函数 css(name,value) 为所有匹配元素的给定 CSS 属性设置值: 实例 $(selector).css(name,value) $("p").css("background-color","red"); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").css("background-color","red"); }); }); This is a heading This is a paragraph. This is another paragraph. Click me 函数 css({properties}) 同时为所有匹配元素的一系列 CSS 属性设置值: 实例 $(selector).css({properties}) $("p").css({"background-color":"red","font-size":"200%"}); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("p").css({"background-color":"red","font-size":"200%"}); }); }); This is a heading This is a paragraph. This is another paragraph. Click me 函数 css(name) 返回指定的 CSS 属性的值: 实例 $(selector).css(name) $(this).css("background-color"); 亲自试一试 $(document).ready(function(){ $("div").click(function(){ $("#result").html($(this).css("background-color")); }); }); Click in the box jQuery Size 操作 jQuery 拥有两种用于尺寸操作的重要函数: • $(selector).height(value) • $(selector).width(value) Size 操作实例 函数 height(value) 设置所有匹配元素的高度: 实例 $(selector).height(value) $("#id100").height("200px"); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("#id100").height("200px"); }); }); HELLO W3SCHOOL 请点击这里 函数 width(value) 设置所有匹配元素的宽度: 实例 $(selector).width(value) $("#id200").width("300px"); 亲自试一试 $(document).ready(function(){ $("button").click(function(){ $("#id200").width("300px"); }); }); HELLO W3SCHOOL 请点击这里 jQuery CSS 函数 - 来自本页 CSS 属性 描述 $(selector).css(name,value) 为匹配元素设置样式属性的值 $(selector).css({properties}) 为匹配元素设置多个样式属性 $(selector).css(name) 获得第一个匹配元素的样式属性值 $(selector).height(value) 设置匹配元素的高度 $(selector).width(value) 设置匹配元素的宽度 八. jQuery 参考手册 @ jQuery 选择器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元素 .class $(".intro") 所有 class="intro" 的元素 element $("p") 所有 元素 .class.class $(".intro.demo") 所有 class="intro" 且 class="demo" 的元素 :first $("p:first") 第一个 元素 :last $("p:last") 最后一个 元素 :even $("tr:even") 所有偶数 元素 :odd $("tr:odd") 所有奇数 元素 :eq(index) $("ul li:eq(3)") 列表中的第四个元素(index 从 0 开始) :gt(no) $("ul li:gt(3)") 列出 index 大于 3 的元素 :lt(no) $("ul li:lt(3)") 列出 index 小于 3 的元素 :not(selector) $("input:not(:empty)") 所有不为空的 input 元素 :header $(":header") 所有标题元素 - :animated 所有动画元素 :contains(text) $(":contains('W3School')") 包含指定字符串的所有元素 :empty $(":empty") 无子(元素)节点的所有元素 :hidden $("p:hidden") 所有隐藏的 元素 :visible $("table:visible") 所有可见的表格 s1,s2,s3 $("th,td,.intro") 所有带有匹配选择的元素 [attribute] $("[href]") 所有带有 href 属性的元素 [attribute=value] $("[href='#']") 所有 href 属性的值等于 "#" 的元素 [attribute!=value] $("[href!='#']") 所有 href 属性的值不等于 "#" 的元素 [attribute$=value] $("[href$='.jpg']") 所有 href 属性的值包含 ".jpg" 的元素 :input $(":input") 所有 元素 :text $(":text") 所有 type="text" 的 元素 :password $(":password") 所有 type="password" 的 元素 :radio $(":radio") 所有 type="radio" 的 元素 :checkbox $(":checkbox") 所有 type="checkbox" 的 元素 :submit $(":submit") 所有 type="submit" 的 元素 :reset $(":reset") 所有 type="reset" 的 元素 :button $(":button") 所有 type="button" 的 元素 :image $(":image") 所有 type="image" 的 元素 :file $(":file") 所有 type="file" 的 元素 :enabled $(":enabled") 所有激活的 input 元素 :disabled $(":disabled") 所有禁用的 input 元素 :selected $(":selected") 所有被选取的 input 元素 :checked $(":checked") 所有被选中的 input 元素 @ jQuery 事件方法 事件方法会触发匹配元素的事件,或将函数绑定到所有匹配元素的某个事件。 触发实例: $("button#demo").click() 上面的例子将触发 id="demo" 的 button 元素的 click 事件。 绑定实例: $("button#demo").click(function(){$("img").hide()}) 上面的例子会在点击 id="demo" 的按钮时隐藏所有图像。 方法 描述 bind() 向匹配元素附加一个或更多事件处理器 blur() 触发、或将函数绑定到指定元素的 blur 事件 change() 触发、或将函数绑定到指定元素的 change 事件 click() 触发、或将函数绑定到指定元素的 click 事件 dblclick() 触发、或将函数绑定到指定元素的 double click 事件 delegate() 向匹配元素的当前或未来的子元素附加一个或多个事件处理器 die() 移除所有通过 live() 函数添加的事件处理程序。 error() 触发、或将函数绑定到指定元素的 error 事件 event.isDefaultPrevented() 返回 event 对象上是否调用了 event.preventDefault()。 event.pageX 相对于文档左边缘的鼠标位置。 event.pageY 相对于文档上边缘的鼠标位置。 event.preventDefault() 阻止事件的默认动作。 event.result 包含由被指定事件触发的事件处理器返回的最后一个值。 event.target 触发事件的 DOM 元素。 event.timeStamp 该属性返回从 1970 年 1 月 1 日到事件发生时的毫秒数。 event.type 描述事件的类型。 event.which 指示按了哪个键或按钮。 focus() 触发、或将函数绑定到指定元素的 focus 事件 keydown() 触发、或将函数绑定到指定元素的 key down 事件 keypress() 触发、或将函数绑定到指定元素的 key press 事件 keyup() 触发、或将函数绑定到指定元素的 key up 事件 live() 触发、或将函数绑定到指定元素的 load 事件 load() 触发、或将函数绑定到指定元素的 load 事件 mousedown() 触发、或将函数绑定到指定元素的 mouse down 事件 mouseenter() 触发、或将函数绑定到指定元素的 mouse enter 事件 mouseleave() 触发、或将函数绑定到指定元素的 mouse leave 事件 mousemove() 触发、或将函数绑定到指定元素的 mouse move 事件 mouseout() 触发、或将函数绑定到指定元素的 mouse out 事件 mouseover() 触发、或将函数绑定到指定元素的 mouse over 事件 mouseup() 触发、或将函数绑定到指定元素的 mouse up 事件 one() 向匹配元素添加事件处理器。每个元素只能触发一次该处理器。 ready() 文档就绪事件(当 HTML 文档就绪可用时) resize() 触发、或将函数绑定到指定元素的 resize 事件 scroll() 触发、或将函数绑定到指定元素的 scroll 事件 select() 触发、或将函数绑定到指定元素的 select 事件 submit() 触发、或将函数绑定到指定元素的 submit 事件 toggle() 绑定两个或多个事件处理器函数,当发生轮流的 click 事件时执行。 trigger() 所有匹配元素的指定事件 triggerHandler() 第一个被匹配元素的指定事件 unbind() 从匹配元素移除一个被添加的事件处理器 undelegate() 从匹配元素移除一个被添加的事件处理器,现在或将来 unload() 触发、或将函数绑定到指定元素的 unload 事件 @ jQuery 效果函数 方法 描述 animate() 对被选元素应用“自定义”的动画 clearQueue() 对被选元素移除所有排队的函数(仍未运行的) delay() 对被选元素的所有排队函数(仍未运行)设置延迟 dequeue() 运行被选元素的下一个排队函数 fadeIn() 淡入被选元素至完全不透明 fadeOut() 淡出被选元素至完全不透明 fadeTo() 把被选元素减弱至给定的不透明度 hide() 隐藏被选的元素 queue() 显示被选元素的排队函数 show() 显示被选的元素 slideDown() 通过调整高度来滑动显示被选元素 slideToggle() 对被选元素进行滑动隐藏和滑动显示的切换 slideUp() 通过调整高度来滑动隐藏被选元素 stop() 停止在被选元素上运行动画 toggle() 对被选元素进行隐藏和显示的切换 @ jQuery 文档操作方法 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html()。 方法 描述 addClass() 向匹配的元素添加指定的类名。 after() 在匹配的元素之后插入内容。 append() 向匹配的元素内部追加内容。 appendTo() 向匹配的元素内部追加内容。 attr() 设置或返回匹配元素的属性和值。 before() 在每个匹配的元素之前插入内容。 clone() 创建匹配元素集合的副本。 detach() 从 DOM 中移除匹配元素集合。 empty() 删除匹配的元素集合中所有的子节点。 hasClass() 检查匹配的元素是否拥有指定的类。 html() 设置或返回匹配的元素集合中的 HTML 内容。 insertAfter() 把匹配的元素插入到另一个指定的元素集合的后面。 insertBefore() 把匹配的元素插入到另一个指定的元素集合的前面。 prepend() 向每个匹配的元素内部前置内容。 prependTo() 向每个匹配的元素内部前置内容。 remove() 移除所有匹配的元素。 removeAttr() 从所有匹配的元素中移除指定的属性。 removeClass() 从所有匹配的元素中删除全部或者指定的类。 replaceAll() 用匹配的元素替换所有匹配到的元素。 replaceWith() 用新内容替换匹配的元素。 text() 设置或返回匹配元素的内容。 toggleClass() 从匹配的元素中添加或删除一个类。 unwrap() 移除并替换指定元素的父元素。 val() 设置或返回匹配元素的值。 wrap() 把匹配的元素用指定的内容或元素包裹起来。 wrapAll() 把所有匹配的元素用指定的内容或元素包裹起来。 wrapinner() 将每一个匹配的元素的子内容用指定的内容或元素包裹起来。 @ jQuery 属性操作方法 下面列出的这些方法获得或设置元素的 DOM 属性。 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html()。 方法 描述 addClass() 向匹配的元素添加指定的类名。 attr() 设置或返回匹配元素的属性和值。 hasClass() 检查匹配的元素是否拥有指定的类。 html() 设置或返回匹配的元素集合中的 HTML 内容。 removeAttr() 从所有匹配的元素中移除指定的属性。 removeClass() 从所有匹配的元素中删除全部或者指定的类。 toggleClass() 从匹配的元素中添加或删除一个类。 val() 设置或返回匹配元素的值。 @ jQuery CSS 操作函数 下面列出的这些方法设置或返回元素的 CSS 相关属性。 CSS 属性 描述 css() 设置或返回匹配元素的样式属性。 height() 设置或返回匹配元素的高度。 offset() 返回第一个匹配元素相对于文档的位置。 offsetParent() 返回最近的定位祖先元素。 position() 返回第一个匹配元素相对于父元素的位置。 scrollLeft() 设置或返回匹配元素相对滚动条顶部的偏移。 scrollTop() 设置或返回匹配元素相对滚动条左侧的偏移。 width() 设置或返回匹配元素的宽度。 @jQuery Ajax 操作函数 jQuery 库拥有完整的 Ajax 兼容套件。其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据。 函数 描述 jQuery.ajax() 执行异步 HTTP (Ajax) 请求。 .ajaxComplete() 当 Ajax 请求完成时注册要调用的处理程序。这是一个 Ajax 事件。 .ajaxError() 当 Ajax 请求完成且出现错误时注册要调用的处理程序。这是一个 Ajax 事件。 .ajaxSend() 在 Ajax 请求发送之前显示一条消息。 jQuery.ajaxSetup() 设置将来的 Ajax 请求的默认值。 .ajaxStart() 当首个 Ajax 请求完成开始时注册要调用的处理程序。这是一个 Ajax 事件。 .ajaxStop() 当所有 Ajax 请求完成时注册要调用的处理程序。这是一个 Ajax 事件。 .ajaxSuccess() 当 Ajax 请求成功完成时显示一条消息。 jQuery.get() 使用 HTTP GET 请求从服务器加载数据。 jQuery.getJSON() 使用 HTTP GET 请求从服务器加载 JSON 编码数据。 jQuery.getScript() 使用 HTTP GET 请求从服务器加载 JavaScript 文件,然后执行该文件。 .load() 从服务器加载数据,然后把返回到 HTML 放入匹配元素。 jQuery.param() 创建数组或对象的序列化表示,适合在 URL 查询字符串或 Ajax 请求中使用。 jQuery.post() 使用 HTTP POST 请求从服务器加载数据。 .serialize() 将表单内容序列化为字符串。 .serializeArray() 序列化表单元素,返回 JSON 数据结构数据。 @ jQuery 遍历函数 jQuery 遍历函数包括了用于筛选、查找和串联元素的方法。 函数 描述 .add() 将元素添加到匹配元素的集合中。 .andSelf() 把堆栈中之前的元素集添加到当前集合中。 .children() 获得匹配元素集合中每个元素的所有子元素。 .closest() 从元素本身开始,逐级向上级元素匹配,并返回最先匹配的祖先元素。 .contents() 获得匹配元素集合中每个元素的子元素,包括文本和注释节点。 .each() 对 jQuery 对象进行迭代,为每个匹配元素执行函数。 .end() 结束当前链中最近的一次筛选操作,并将匹配元素集合返回到前一次的状态。 .eq() 将匹配元素集合缩减为位于指定索引的新元素。 .filter() 将匹配元素集合缩减为匹配选择器或匹配函数返回值的新元素。 .find() 获得当前匹配元素集合中每个元素的后代,由选择器进行筛选。 .first() 将匹配元素集合缩减为集合中的第一个元素。 .has() 将匹配元素集合缩减为包含特定元素的后代的集合。 .is() 根据选择器检查当前的匹配元素集合,如果存在至少一个匹配元素,则返回 true。 .last() 将匹配元素集合缩减为集合中的最后一个元素。 .map() 把当前匹配集合中的每个元素传递给一个函数,产生包含返回值的新的 jQuery 对象。 .next() 获得匹配元素集合中每个元素紧邻的同辈元素。 .nextAll() 获得匹配元素集合中每个元素之后的所有同辈元素,由选择器进行筛选(可选)。 .nextUntil() 获得每个元素之后所有的同辈元素,直到遇到匹配选择器的元素为止。 .not() 从匹配元素集合中删除元素。 .offsetParent() 获得用于定位的第一个父元素。 .parent() 获得当前匹配元素集合中每个元素的父元素,由选择器筛选(可选)。 .parentsUntil() 获得当前匹配元素集合中每个元素的祖先元素,直到遇到匹配选择器的元素为止。 .prev() 获得匹配元素集合中每个元素紧邻的前一个同辈元素,由选择器筛选(可选)。 .prevAll() 获得匹配元素集合中每个元素之前的所有同辈元素,由选择器进行筛选(可选)。 .prevUntil() 获得每个元素之前所有的同辈元素,直到遇到匹配选择器的元素为止。 .siblings() 获得匹配元素集合中所有元素的同辈元素,由选择器筛选(可选)。 .slice() 将匹配元素集合缩减为指定范围的子集。 @ jQuery 数据存储函数 这些方法允许我们将指定的 DOM 元素与任意数据相关联。 函数 描述 .data() 存储与匹配元素相关的任意数据。 jQuery.data() 存储与指定元素相关的任意数据。 .removeData() 移除之前存放的数据。 jQuery.removeData() 移除之前存放的数据。 @ jQuery 队列控制函数 函数 描述 .clearQueue() 从队列中删除所有未运行的项目。 .dequeue() 从队列最前端移除一个队列函数,并执行它。 jQuery.dequeue() 从队列最前端移除一个队列函数,并执行它。 .queue() 显示或操作匹配元素所执行函数的队列。 jQuery.queue() 显示或操作匹配元素所执行函数的队列。 九. jQuery 核心函数 函数 描述 jQuery() 接受一个字符串,其中包含了用于匹配元素集合的 CSS 选择器。 实例 找出所有属于 div 元素的子元素的 p 元素,然后设置其边框属性: $("div > p").css("border", "1px solid gray"); 亲自试一试 定义和用法 jQuery() 方法接受一个字符串,其中包含了用于匹配元素集合的 CSS 选择器。 jQuery() 函数有三种语法: 语法 1 接受一个字符串,其中包含了用于匹配元素集合的 CSS 选择器: jQuery(selector, [context]) 详细用法 语法 2 使用原始 HTML 的字符串来创建 DOM 元素: jQuery(html,[ownerDocument]) 详细用法 语法 3 绑定一个在 DOM 文档载入完成后执行的函数: jQuery( callback ) 详细用法 jQuery( selector, [ context ] ) 该语法有以下几种用法: 用法 1 :设置选择器环境 语法 jQuery(selector, [context]) 默认情况下,选择器从文档根部对 DOM 进行搜索。不过,可以为 $() 设置可选的 context 参数。 例如,如果我们希望在一个 callback 中搜索一个元素,可以限定下面的搜索: 实例 $("div.foo").click(function() { $("span", this).addClass("bar"); }); 由于我们已经将 span 选择器限定到 this 这个环境中,只有被点击元素中的 span 会得到附加的 class。 在内部,选择器环境是通过 .find() 方法实现的,因此 $("span", this) 等价于 $(this).find("span")。 jQuery 的核心功能都是通过这个函数实现的。jQuery中的一切都基于这个函数,或者说都是在以某种方式使用这个函数。这个函数最基本的用法就是向它传递一个表达式(通常由 CSS 选择器组成),然后根据这个表达式来查找所有匹配的元素。 默认情况下, 如果没有指定 context 参数,$() 将在当前的 HTML document 中查找 DOM 元素;如果指定了 context 参数,如一个 DOM 元素集或 jQuery 对象,那就会在这个 context 中查找。在 jQuery 1.3.2 以后,其返回的元素顺序等同于在 context 中出现的先后顺序。 用法 2 :使用 DOM 元素 语法 jQuery(element) 该函数允许我们通过使用以其他方式找到的 DOM 元素来创建 jQuery 对象。该功能通常的用法是,对已经通过 this 关键字传递到 callback 函数的元素调用 jQuery 的方法: 实例 $("div.foo").click(function() { $(this).slideUp(); }); 此例会在元素被点击时使用滑动动画对其进行隐藏。由于处理程序接受的 this 关键词中的被点击项目是纯的 DOM 元素,因此在对其调用 jQuery 的方法之前,必须用 jQuery 对象包装该元素。 这个函数也可以接收 XML 文档和 Window 对象(虽然它们不是 DOM 元素)作为有效的参数。 当 XML 数据从 Ajax 调用中返回后,我们可以使用 $() 函数通过 jQuery 对象包装该数据。一旦完成,我们就可以使用 .find() 和其他 DOM 遍历方法来取回 XML 结构中单个元素。 用法 3 :克隆 jQuery 对象 语法 jQuery(jQuery object) 当以参数的形式向 $() 函数传递 jQuery 对象后,会创建一个该对象的副本。与初始对象一样,新的 jQuery 对象引用相同的 DOM 元素。 用法 4 :返回空的集合 语法 jQuery() 对于 jQuery 1.4,调用无参数的 jQuery() 方法会返回空的 jQuery 集合。在之前版本的 jQuery 中,这样会返回包含 document 节点的集合。 jQuery( html, [ ownerDocument ] ) 该语法有以下几种用法: 用法 1 :创建新的元素 语法 jQuery(html,[ownerDocument]) 你可以传递一个手写的 HTML 字符串,或者由某些模板引擎或插件创建的字符串,也可以是通过 AJAX 加载过来的字符串。但是在你创建 input 元素的时会有限制,可以参考第二个示例。 当然这个字符串可以包含斜杠 (比如一个图像地址),还有反斜杠。当你创建单个元素时,请使用闭合标签或 XHTML 格式。例如,创建一个 span ,可以用 $("") 或 $("") ,但不推荐 $("")。在 jQuery 中,这个语法等同于 $(document.createElement("span"))。 如果以参数的形式将字符串传递给 $(),jQuery 会检查字符串是否是 HTML (比如,字符串某些位置存在标签)。如果不是,则把字符串解释为选择器表达式,请见上面的讲解。但如果字符串是 HTML 片段,则 jQuery 试图创建由该 HTML 片段描述的 DOM 元素。然后会创建并返回一个引用这些 DOM 元素的 jQuery 对象: 实例 $("My new text").appendTo("body"); 如果 HTML 片段比不含属性的简单标签更复杂,如同上面例子中的 HTML,那么元素实际的创建过程是由浏览器的 innerHTML 机制完成的。具体地讲,jQuery 会创建新的 元素,然后为传入的 HTML 片段设置元素的 innerHTML 属性。当参数只是简单的标签,比如$("") 或 $(""),jQuery 会通过内生的 JavaScript createElement() 函数来创建元素。 要确保跨平台兼容性,片段的结构必须良好。能够包含其他元素的标签必须成对出现(带有关闭标签): $(""); 不过,jQuery 也允许类似 XML 的标签语法: $(""); 无法包含其他元素的标签可以关闭,也可以不关闭: $(""); $(""); 用法 2 :设置属性和事件 语法 jQuery(html,props) 对于 jQuery 1.4,我们可以向第二个参数传递一个属性映射。该参数接受能够传递给 .attr() 方法的属性的超集。此外,可以传递任意的事件类型,并可以调用下面的 jQuery 方法:val, css, html, text, data, width, height, or offset. 注意,Internet Explorer 不允许你创建 input 元素并改变其类型;您必须使用例如 "" 来规定类型。 实例 创建一个 元素,同时设定 type 属性、属性值,以及一些事件。 $("", { type: "text", val: "Test", focusin: function() { $(this).addClass("active"); }, focusout: function() { $(this).removeClass("active"); } }).appendTo("form"); jQuery( callback ) 允许你绑定一个在 DOM 文档载入完成后执行的函数。 该函数的作用如同 $(document).ready() 一样,只不过用这个函数时,需要把页面中所有需要在 DOM 加载完成时执行的其他 $() 操作符都包装到其中来。尽管从技术上来说,这个函数是可链接的,但真正以这种方式链接的情况并不多。 例子 当DOM加载完成后,执行其中的函数: $(function(){ // 文档就绪 }); 函数 描述 jQuery.noConflict() 运行这个函数将变量 $ 的控制权让渡给第一个实现它的那个库。 定义和用法 noConflict() 方法让渡变量 $ 的 jQuery 控制权。 语法 jQuery.noConflict([removeAll]) 参数 描述 removeAll 布尔值。指示是否允许彻底将 jQuery 变量还原。 说明 许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样。在 jQuery 中,$ 仅仅是 jQuery 的别名,因此即使不使用 $ 也能保证所有功能性。假如我们需要使用 jQuery 之外的另一 JavaScript 库,我们可以通过调用 $.noConflict() 向该库返回控制权: $.noConflict(); // 使用另一个库的 $ 的代码 可以与 .ready() 方法结合起来使用,来为 jQuery 对象起别名,这项技术非常有效: $.noConflict(); jQuery(document).ready(function($) { // 使用 jQuery $ 的代码 }); // 使用其他库的 $ 的代码 此外,通过向该方法传递参数 true,我们可以将 $ 和 jQuery 的控制权都交还给原来的库。用之前请考虑清楚! 这是相对于简单的 noConflict 方法更极端的版本,因为这将完全重新定义 jQuery。这通常用于一种极端的情况,比如你想要将 jQuery 嵌入一个高度冲突的环境。注意:调用此方法后极有可能导致插件失效。 实例 例子 1 将 $ 引用的对象映射回原始的对象: jQuery.noConflict(); jQuery("div p").hide(); // 使用 jQuery $("content").style.display = "none"; // 使用其他库的 $() 例子 2 恢复使用别名 $,然后创建并执行一个函数,在这个函数的作用域中仍然将 $ 作为 jQuery 的别名来使用。在这个函数中,原来的 $ 对象是无效的。这个函数对于大多数不依赖于其他库的插件都十分有效: jQuery.noConflict(); (function($) { $(function() { // 使用 $ 作为 jQuery 别名的代码 }); })(jQuery); ... // 其他用 $ 作为别名的库的代码 例子 3 可以将 jQuery.noConflict() 与简写的 ready 结合,使代码更紧凑: jQuery.noConflict()(function(){ // 使用 jQuery 的代码 }); ... // 其他库使用 $ 做别名的代码 例子 4 创建一个新的别名用以在接下来的库中使用 jQuery 对象: var j = jQuery.noConflict(); j("div p").hide(); // 基于 jQuery 的代码 $("content").style.display = "none"; // 基于其他库的 $() 代码 例子 5 完全将 jQuery 移到一个新的命名空间: var dom = {}; dom.query = jQuery.noConflict(true); 结果: dom.query("div p").hide(); // 新 jQuery 的代码 $("content").style.display = "none"; // 另一个库 $() 的代码 jQuery("div > p").hide(); // 另一个版本 jQuery 的代码

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧