最近在做项目的时候使用了Jquery~新手学习jquery.~遇到了一些"奇怪"的问题(各位大神别拍砖).
感谢ClassYuan老大的支持..ClassYuan的blog.http://www.classyuan.com/.下面列举一些:
1.跟HTML元素加载事件的时候,会在加载的时候同时执行该事件。
错误代码:
view source PRint?1 |
$( "#btnLoad" ).bind( "click" ,GetProduct()); |
正确代码
view source print?
1 |
$( "#btnLoad" ).bind( "click" , function () { GetProduct() }); |
我在这段代码,忽略了Bind这个方法.Api的解释是bind(type,[data],fn)
我错误的讲fn当做一个简单的function..导致这段代码会在加载的时候执行一次这个fn..
这是一个书写格式的疏忽.希望知道原因的大神可以指点。
2变量作用域的问题.(貌似这个不是jquery的问题.而是js跟.net的区别..)
view source print?
1 |
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.事件执行顺序的问题
view source print?
1 |
< 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标签..然后修改事件
view source print?
1 |
idwrap( '<a href="http://www.QQ.com"></a>' ); |
以上是我这个新手第一次使用jquery所遇到的问题..留在这里.当做成长的历程..各位大神老鸟..别喷吖..