ClassYuan的blog.http://www.classyuan.com/.下面列举一些: 1.跟HTML元素加载事件的时候,会在加载的时候同时执行该事件。 错误代码: 复制代码 代码如下: $("#btnLoad").bind("click",GetProduct()); 正确代码 复制代码 代码如下:$("#btnLoad").bind("click", function() { GetProduct() }); 我在这段代码,忽略了Bind这个方法.Api的解释是bind(type,[data],fn) 我错误的讲fn当做一个简单的function..导致这段代码会在加载的时候执行一次这个fn.. 这是一个书写格式的疏忽.希望知道原因的大神可以指点。 2变量作用域的问题.(貌似这个不是jquery的问题.而是js跟.net的区别..) 复制代码 代码如下:function text() { 2 for (var i = 0; i < 3; i++) { 3 $("<a>删除</a>").attr({ id: "hr_" + i, href: "javascript:;" }).addClass("btnCss").bind("click", function() { tes(i) }).appendTo(".div_list"); 4 } 5 } 6 function tes(id) { 7 alert(id); 8 } 这个函数.我想让他alert出相应的id..结果..答案很同意..3个<a>标签的函数..弹出来都是3.. 看了一下..明白了 变量作用域的问题,传个tes函数的参数是循环结束后i的值,所以全部是3。 这一点似乎和.net不一样。 最后接解决方案- -..直接吧$(this)传递进去了 3.事件执行顺序的问题 复制代码 代码如下:<a target="_blank" title="Iphone" > 2 <img id="proImg7_2" src="" alt="Iphone" style="width:70px; height:60px; border:none;" /> 3 </a> 给这个图片绑定了onclick事件,事件的内容是给<img>标签的parent增加一个href属性. 但是事件执行完毕之后,将会直接跳转到a标签的链接。经过分析. 应为click是在href之前执行的,也就是当点击图片的时候A标签已经有了href,然后同时又触发了A标签. 解决方案..去掉<img>外层的a标签..然后修改事件 复制代码 代码如下:idwrap('<a href="http://www.baidu.com"></a>'); 以上是我这个新手第一次使用jquery所遇到的问题..留在这里.当做成长的历程..各位大神老鸟..别喷吖..第一个问题 $('#btnLoad').bind('click', GetProduct); 记住,绑定事件是绑一个函数上去,而GetProduct(),带了括号以后,得到的是这个函数的返回值。而你的GetProduct的返回值明显不是个函数 $("#btnLoad").bind("click",GetProduct()); 改为: $("#btnLoad").bind("click",GetProduct); 试试。 GetProduct() 是执行一个函数,然后返回值,但是返回的值并非 fn 类型。 第二个问题 其实.NET里也有,这是闭包的问题,在闭包中得到的是i变量的地址,而i不断在变,因此访问这个地址后的获得的值也一直在变,所以所有的tes都用了i这个变量最后的值,就是3 这个问题用如下方法解决(我简化下代码): for (var i = 0; i < 3; i++) { (function(i) { $('<a>删除</a>').appendTo('.div_list').bind('click', function() { tes(i); }); })(i); } 如果你无法理解这么写的原理,没关系,先记住这个形式,以后遇上类似的问题就按这个思路去写,也就是外面套一层(function() { xxx })(); 说到原画,其实很简单,通过函数的时候,i作为基本类型变量是按值传递的,也就是说会把当前的i的值复制一份值到这个函数中,因此每一次调用这个匿名函数的时候,i都是相互独立的,不会受外层for的影响 第三个问题 当a没有给href属性时,href则默认为当前页的址,所以你点击后就会跳转。所以网上流行的处理方式有以一下几种 1.<a href="###">dfa</a> 2.<a href="javascript:void();">dfa</a> 3.<a href="javascript:;">dfa</a>
推荐阅读
基于jQuery UI CSS Framework开发Widget的经验
jQuery UI中两大核心的css文件是ui.core.css和ui.theme.css.这两个css样式贯穿整个基于jQuery ui的界面上,并且可以通过jQuery ui ThemeRoller来生成自己的样式。 .ui-helper-hidden :为元素应用display:none .ui->>>详细阅读
本文标题:新手常遇到的一些jquery问题整理
地址:http://www.17bianji.com/kaifa2/JS/25837.html
1/2 1