jquery使用click绑定的事件无效

adventurelw 2014-09-01 08:20:57

$(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。。。。。。。
...全文
6912 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
adventurelw 2014-09-02
  • 打赏
  • 举报
回复
试了一下各种方法,感觉像是绑定上去了,就是没效果啊。。
图片中有a元素的click事件,不过代码位置是jquery里关于click这类方法的位置,而不是.click调用的实际位置。。。。。。
用原始的onclick = function是不会出现那个a元素的click listener的

adventurelw 2014-09-02
  • 打赏
  • 举报
回复
引用 6 楼 Tony__1983 的回复:
你的元素是动态生成的吗? 如果是的话用live或者delegate绑定
虽然是动态的,但是先生成而后绑定,因为不存在找不到的问题。
adventurelw 2014-09-02
  • 打赏
  • 举报
回复
引用 11 楼 net_lover 的回复:
首先,使用firebug查看是否页面出现了脚本错误 再次,确认你的代码找到了a元素 最后。你可以使用 $(document).on("click",".info-add",function(){ alert("ok") }) 如果再不行,请发完整的代码给我
虽然不知道为什么,但用类似思路居然搞定了。。。把class改成id,因为我有上百个div.info-add,改成div#info-add-playerId(playerId动态变化) 然后

$(document).on("click", "#info-add-" + playerId + " a", function() {
   alert("OK" + playerId);
});
就搞定了,不过再请教一下, 为啥 $("#info-add-" + playerId).on("click", "a", function......) 这样就不行呢?id是唯一的,应该也可以准备获取相应的div啊。。。。 多谢
Tony__1983 2014-09-02
  • 打赏
  • 举报
回复
你的元素是动态生成的吗? 如果是的话用live或者delegate绑定
孟子E章 2014-09-02
  • 打赏
  • 举报
回复
首先,使用firebug查看是否页面出现了脚本错误 再次,确认你的代码找到了a元素 最后。你可以使用 $(document).on("click",".info-add",function(){ alert("ok") }) 如果再不行,请发完整的代码给我
adventurelw 2014-09-02
  • 打赏
  • 举报
回复
live jquery1.9就移除了啊,现在倒不是找不到元素或者无法绑定,而是绑定了之后无效。 我直接把a改成p元素,click listeners里面也有,但是那个alter("hello");怎么样都无法触发。。。。。。
华海未寒 2014-09-02
  • 打赏
  • 举报
回复
应该使用live进行绑定时间。
xuzuning 2014-09-01
  • 打赏
  • 举报
回复
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); return false; });
温安适 2014-09-01
  • 打赏
  • 举报
回复
你之前的绑定是$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); }); 与普通click绑定一样 试试这样绑定 $(this).on("click",".info-add a",function() { alert("Hello"); });
mars__dvi6 2014-09-01
  • 打赏
  • 举报
回复
那你可试一下,bind或live咋!
adventurelw 2014-09-01
  • 打赏
  • 举报
回复
引用 1 楼 net_lover 的回复:
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); });
on我也试过,一样无效,好像这两个基本一样? 因为a元素本身就有可点击属性,所以点击之后,还是会响应其原始的事件,比如href=‘#’,就会在地址栏最后加一个#。。。。不知道会不会是因为原始事件覆盖了后加的事件?。。。。。
孟子E章 2014-09-01
  • 打赏
  • 举报
回复
$(this).children(":last").prev().children("a").on("click",function() { alert("Hello"); });

87,997

社区成员

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

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