JQuery只在重新加载时调用bind()逻辑两次
我有以下代码:JQuery只在重新加载时调用bind()逻辑两次,jquery,click,bind,Jquery,Click,Bind,我有以下代码: $(document).ready(function () { $("#Titles .item a").each(function (index, domEle) { // 1) $(this).ttip($.extend(true, {}, ttip_opts, { content: { text: $(this).attr('title'),
$(document).ready(function () {
$("#Titles .item a").each(function (index, domEle) {
// 1)
$(this).ttip($.extend(true, {}, ttip_opts, {
content: {
text: $(this).attr('title'),
title: {
text: "SomeText"
}
}
}));
// 2)
$(this)
.bind("click", function (event) {
alert(this);
})
.attr('title', '');
});
});
当我在页面上单击“重新加载”并单击链接时,警报语句会显示两次。在随后的单击中,它只显示一次
当我注释掉语句#1时,它每次只出现一次
这里发生了什么?如何使警报语句每次显示一次?在我循环的元素中只有一个锚元素
更新
即使我删除了与click事件的绑定,我仍然会在我的方法上得到两次单击(现在从另一个脚本调用)。因此,each函数只在重载时执行click()方法中的逻辑
仍然在试图弄清楚如何确定它是否在重新加载时被调用,所以我至少忽略了我不想运行两次的逻辑。我认为
ttip
插件正在触发元素上的click
事件,我认为这不是必需的。您可以尝试此操作,以停止事件传播
$(document).ready(function () {
$("#Titles .item a").each(function (index, domEle) {
// 2)
$(this)
.bind("click", function (event) {
alert(this);
return false;
}).attr('title', '');
// 1)
$(this).ttip($.extend(true, {}, ttip_opts, {
content: {
text: $(this).attr('title'),
title: {
text: "SomeText"
}
}
}));
});
});
是否忘记放置“$(文档).ready(函数(){”结束标记?是..已验证结束标记在脚本中。该建议不太有效。更改前后顺序会导致ttip的对象引用无效。