【发布时间】:2010-03-31 14:01:56
【问题描述】:
我在链接上遇到 jquery 实时事件绑定问题。当链接添加到页面时它工作正常,但是当另一个链接添加到无序列表时,它需要两次单击才能在任一链接上触发 click 事件。有什么想法吗?
$("div#website-messages ul li a").live("click", function() {
var link = $(this);
changeTab(link.attr("href"));
$(link.attr("title")).focus();
return false;
});
编辑:好的,我已经缩小了问题的范围。如果我取出 return false,则事件每次都会触发。问题是页面跳转到顶部。有什么想法可以阻止这种情况吗?
创建链接的代码:
Validation.validate = function() {
var html = "";
for (var i = 0; i < errors.length; i++) {
html += "<li><a href='" + errors[i].tabid + "' title='" + errors[i].elementID + "'>" + errors[i].message + "</a></li>";
}
$("div#website-messages ul").html(html);
}
更改选项卡函数
function changeTab(changeTo) {
changeTo = changeTo.substr(changeTo.indexOf("#"), changeTo.length);
$("#tabs div").hide();
$(changeTo).show();
$("ul.navigation li a").removeClass("selected");
$("ul.navigation li a[href='" + changeTo + "']").addClass("selected");
}
已解决 我在文本输入上发生了一个模糊事件,这些事件正在验证它们。如果我单击一个错误并聚焦到第一个文本框,然后单击第二个错误,它将聚焦到第二个文本框但会触发模糊事件而不是聚焦。非常感谢大家的帮助和建议,这让我一整天都发疯了。
【问题讨论】:
-
代码是否运行两次,每个链接一次?尝试在函数中添加警报...
-
是的,代码将为每个链接运行一次。然后需要双击才能运行。
-
@Jon 我认为 James 的建议是,只需单击一个链接一次,您那里的代码实际上可能会执行两次。结果会进入一个奇怪的状态,因为每次点击都会多次执行代码,所以行为会得到意想不到的结果。您能否在 jsbin.com 上提供您的问题示例?
-
我正在尝试在 jsbin 上创建一个示例,但它不会重现问题。
-
我建议尝试缩小您的代码与 jsbin 中的工作之间的差异 - 显然有些不同
标签: javascript live jquery