2013-10-14 80 views
1

我剛剛從jquery 1.5.2升級到1.10.2。 我將所有.live()調用更改爲.on()。但由於某種原因,一個特定的按鈕不再有效。 這裏的邏輯:點擊事件升級到jquery後不會觸發1.10.2

$("#add_to_rule").on("click", function() {    
     console.log('inside add'); 
     //only add if no validation errors. 
     if (($('#contact_details').val().length == 0)) { 
      $('#validation_error').html("There is no information to add"); 
      return false; 
     } 
     var emess = $("#validation_error").text(); 
     if (emess.length == 0) { 
       add_routing_entry();    
       update_call_routing_tag();  
     } 
    }); 

它永遠不會打印在控制檯中的「內部添加」的消息。 從控制檯窗口中,我已經測試確保元素存在並返回正確的值。下面是一些結果從我的控制檯內部測試:

$('#add_to_rule').val(); 
"Add to Rule" 
$('#add_to_rule').on("click"); 
<input id=​"add_to_rule" type=​"button" class=​"submit" value=​"Add to Rule">​ 

我也試着上的按鈕更改值作爲測試,從控制檯窗口中,像這樣:

$('#add_to_rule').val("test"); 
[ 
<input id=​"add_to_rule" type=​"button" class=​"submit" value=​"test">​ 
] 

它確實更新了我的按鈕上的文字。

最後,對於它的價值,我甩了jQuery庫它是由添加以下行撿的版本:

console.log(jQuery.fn.jquery); 

它打印1.10.2。

任何關於我可能會做錯的建議將不勝感激。 謝謝。

+0

我寫了一個答案解釋(HTTP [上生活和它是如何約束之間的差異]一些: //stackoverflow.com/a/19267312/542251)最近 – Liam

+0

該按鈕是第一次加載頁面的一部分,還是以後添加的? – Archer

+0

[Jquery.on()方法無法在動態內容上工作的可能的重複](http://stackoverflow.com/questions/15090942/jquery-on-method-not-working-on-dynamic-content) – Liam

回答

4

將其綁定到最接近的靜態父元素,使用事件代表團這樣的動態添加元素:

$(document).on("click","#add_to_rule", function() {