Javascript 使用.on()时,Jquery(2.2.0)click listener在单击几下后停止工作,但是.click()工作正常
我在Jquery 2.2.0中使用bootstrap 3.3.6,并尝试使用Javascript 使用.on()时,Jquery(2.2.0)click listener在单击几下后停止工作,但是.click()工作正常,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我在Jquery 2.2.0中使用bootstrap 3.3.6,并尝试使用.on()为我的bootstrap下拉菜单项设置单击侦听器。链接点击注册了几次点击(通常2-3次),但随后它们停止工作。如果我使用.click(),则单击将继续工作而不会出现问题 采取的具体步骤: 使用“我的项目1”菜单“下移”;这会将其移到“我的项目2”下 使用“我的项目2”菜单“下移”;这会将其移动到“我的项目1”下 使用“我的项目1”菜单“下移”;这无法移动 JS小提琴演示问题: $(“#我的项目”)。在('单击
.on()
为我的bootstrap下拉菜单项设置单击侦听器。链接点击注册了几次点击(通常2-3次),但随后它们停止工作。如果我使用.click()
,则单击将继续工作而不会出现问题
采取的具体步骤:
$(“#我的项目”)。在('单击','我的项目菜单li a',函数(){//失败
//$(document).on('click','my item menu li a',function(){//失败
//$('.my item menu li a')。单击(function(){//WORKS
var-link=$(这个);
var item=link.parent().parent().parent().parent().parent().parent().parent();
if(link.hasklass('move_up')){
如果(item.index()>0){
item.parent().children().eq(item.index()-1).insertAfter(item);
}
}
else if(link.hasClass('move_down')){
if(item.index()
我的项目2
选择权
我是否错误地使用了
.on()
,或者这是jquery/bootstrap的一个潜在错误?(或者我的浏览器——目前在OS X上运行Chrome 48.0.2564.103(64位)?不确定原因,可能需要了解bootstrapsdropdown
插件的工作方式,但您似乎在调用dropdown('toggle'))
在错误的元素上。因此可能是在未设置下拉列表的元素上执行切换
(例如不是数据切换
元素)最终,他们的事件被取消,使其无法到达您的#我的项目
或文档
元素。但这只是一个猜测,您必须深入他们的代码才能确定
开关
link.closest('.my-item-menu').dropdown('toggle');
差不多
link.closest('.dropdown').find("button").dropdown('toggle');
现在它的工作原理与预期一致
演示
$(“#我的项目”)。在('click','上。我的项目菜单li a',函数(){
//$(文档).on('单击',''。我的项目菜单li a',函数(){
//$('.my item menu li a')。单击(函数(){
var-link=$(这个);
var item=link.parent().parent().parent().parent().parent().parent().parent();
if(link.hasklass('move_up')){
如果(item.index()>0){
item.parent().children().eq(item.index()-1).insertAfter(item);
}
}
else if(link.hasClass('move_down')){
if(item.index()
我的项目1
选择权
我的项目2
选择权
你的小提琴使用的是jquery 2.1.4
?我相信它使用的是2.2.0。我已经在外部资源下列出了它。还是我遗漏了什么?@PatrickEvans——我应该澄清我采取的确切步骤:我使用“下移”选项中哪个项在列表中位于第一位。执行两次后,即我第三次尝试后,菜单项不再移动。(我也将使用这些详细信息更新问题)@PatrickEvans我可以复制该问题。。您只需使用$('.my item menu li a')进行计算。on(‘点击’,
也可以从中看到。。您将其附加到parent
上的具体原因是什么?很好的发现,谢谢!只是好奇,您是如何发现这个bug的?只是敏锐的眼睛,还是一些调试工具帮助识别了它?还有一个提示使用var item=link.closest('.well.sm')
而不是var item=link.parent().parent()().parent().parent().parent().parent();
link.closest('.dropdown').find("button").dropdown('toggle');