2009-04-26 65 views
0

我試圖用jQuery效果fadeTo顯示一條錯誤消息,試圖通過追加一個按鈕並使用淡出來隱藏消息,但似乎不起作用。如何將事件綁定到附加元素?

我所做的是:

$("#sub_error") 
    .fadeTo(200, 0.1, function() 
    { 
    $("#sub_error") 
     .html(error.join("<br/><br/>")) 
     .append('<br/><input type="button" name="err_ok" id="err_ok" value="ok">') 
     .addClass('subboxerror') 
     .fadeTo(900,1); 
    }); 

$("#err_ok").click(function() 
{ 
    $("#sub_error").fadeOut("slow"); 
}); 

我在做什麼錯了,可能有人幫助我嗎?

+0

在什麼時候停止工作? – SilentGhost 2009-04-26 20:54:52

+0

重讀故事之後,我再也不那麼確定了。我不知道我的答案是否有幫助。 – 2009-04-26 21:01:49

回答

2

#err_ok元素首先不存在,因此.click()處理程序不會應用於它。

您可以通過將

$("#err_ok").click(function() { 
    $("#sub_error").fadeOut("slow"); 
}); 

的功能解決了這個和創造的DOM元素後調用該函數。

編輯:這應該是一個完整的解決方案:

$("#sub_error").fadeTo(200, 0.1, function() { 
    $("#sub_error") 
     .html(error.join("<br/><br/>")) 
     .append('<br/><input type="button" name="err_ok" id="err_ok" value="ok">') 
     .addClass('subboxerror') 
     .fadeTo(900, 1); 
    bindEvents(); 
}); 

function bindEvents() { 
    $("#err_ok").click(function() { 
     $("#sub_error").fadeOut("slow"); 
    }); 
} 

還有結合事件以後創建的DOM元素太多了「live」功能。

0

FWIW,存在關於JQuery錯誤跟蹤器上的fadeTo/fadeOut錯誤的票據。

0

有幾種方法可以做到這一點。一,你可以追加單擊處理該元素是插入後:

$("#sub_error").fadeTo(200, 0.1, function() { 
    $("#sub_error") 
     .html(error.join("<br/><br/>")) 
     .append('<br/><input type="button" name="err_ok" id="err_ok" value="ok">') 
     .addClass('subboxerror') 
     .fadeTo(900, 1) 
     .find('#err_ok') 
     .click(function() { 
     $("#sub_error").fadeOut("slow"); 
     }); 
}); 

或兩個,您可以使用實時事件處理程序,以便與「err_ok」 ID的任何元素將獲得的點擊處理程序時,它是創建。

$('#err_ok').live('click', function() { 
    $('#sub_error').fadeOut('slow'); 
}); 
相關問題