我遇到了jquery實時事件綁定的問題。當鏈接添加到頁面時,它工作正常,但是當另一個鏈接添加到無序列表中時,它需要兩次點擊才能在任一鏈接上觸發點擊事件。有任何想法嗎?HTML鏈接和Jquery Live僅在第一次嘗試時嘗試點擊一下
$("div#website-messages ul li a").live("click", function() {
var link = $(this);
changeTab(link.attr("href"));
$(link.attr("title")).focus();
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);
}
ChangeTab功能
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");
}
解決 我對到驗證他們正在集中在文本輸入的模糊事件。如果我點擊其中的一個錯誤並將注意力集中到第一個文本框,然後單擊第二個錯誤,它會將焦點放在第二個文本框上,但是會觸發模糊事件而不是焦點。非常感謝你的幫助和建議,這讓我一整天都很瘋狂。
代碼是否運行兩次,每次鏈接一次?嘗試在函數中添加警報... – 2010-03-31 14:11:27
是的,代碼將爲每個鏈接運行一次。之後,它需要雙擊才能運行。 – Jon 2010-03-31 14:16:58
@Jon我認爲James的建議是,通過單擊一個鏈接一次,您在那裏的代碼實際上可能會執行兩次。結果進入一個奇怪的狀態,行爲正在得到意想不到的結果,因爲每次點擊都會多次執行代碼。你能在jsbin.com上提供你的問題的例子嗎? – Matt 2010-03-31 14:42:07