$(this).children(":last").prev().after("<div class='bounty-add'><a target='_blank' href='bounties.php#/p=add&XID=" + playerId + "'>[Bounty]</a></div>"); $(this).children(":last").prev().after("<div class='info-add'><a href='#'>[Refresh]</a></div>"); $("div.bounty-add").css(addStyle); $("div.info-add").css(addStyle); $(this).children(":last").prev().children("a").click(function() { alert("Hello"); });
相关基本代码如上,Refresh这个a元素可以顺利获取,但就是绑定的click事件无效,在chrome“开发者工具”里"Elements"的“Event Listeners”也找不到有效绑定。
上边基本代码所添加的dom都有效,外层是两个each循环,不过感觉应该没啥影响,所有代码都能顺利执行,包括绑定这一步。就是执行完毕之后去点那个a元素无效,也找不到绑定了这个function。。。。。。。
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); });
on我也试过,一样无效,好像这两个基本一样?
因为a元素本身就有可点击属性,所以点击之后,还是会响应其原始的事件,比如href=‘#’,就会在地址栏最后加一个#。。。。不知道会不会是因为原始事件覆盖了后加的事件?。。。。。
你之前的绑定是
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); });
与普通click绑定一样
试试这样绑定
$(this).on("click",".info-add a",function() { alert("Hello"); });
你的元素是动态生成的吗?
如果是的话用live或者delegate绑定
live jquery1.9就移除了啊,现在倒不是找不到元素或者无法绑定,而是绑定了之后无效。
我直接把a改成p元素,click listeners里面也有,但是那个alter("hello");怎么样都无法触发。。。。。。
首先,使用firebug查看是否页面出现了脚本错误
再次,确认你的代码找到了a元素
最后。你可以使用
$(document).on("click",".info-add",function(){ alert("ok") })
如果再不行,请发完整的代码给我
以上是为什么jquery使用click绑定的事件无效?的详细内容。更多信息请关注PHP中文网其他相关文章!