2012-08-27 104 views
1

我有一個文本框#search_text。在keyup上,我創建了一個div#sresult_container.and並將其附加到div#sresult_container。當此容器顯示在畫布上時,我嘗試將click和mouseover事件綁定到div#sresult_container。我嘗試下面的代碼,但沒有工作,我該怎麼辦?事件綁定到動態創建的元素

$("#search_text").keyup(function(e) { 
    if (e.which != 40 && e.which != 38) { 
     $("#search").removeAttr('disabled'); 
     $.post('http://www.allinone.com', { 
      Search: sVal 
     }, function(data) { 
      $sresult_container = $('<div id="sresult_container"></div>'); 
      //somecode which create another divs and append to the $sresult_container 
     }) 
    } 

    $('#sresult_container').bind({ 
     click: function(e) { 
      //some code 
      }, 
      mouseover: function(e) { 
       //some code 
      } 
     }); 
    }); 
+0

請小心'.live()'方法是[棄用](http://api.jquery.com/live/)。改用'.on()'或''.delegate()'。 –

+0

可能重複[jQuery:動態創建元素上的事件綁定?](http://stackoverflow.com/questions/203198/jquery-event-binding-on-dynamically-created-elements) –

回答

-1

您可以使用「live」功能執行此任務。

$('#sresult_container').live('click', function() { 
    alert('hello from binded function call'); 
}); 
+0

沒有我的朋友。從jQuery 1.7開始,'.live()'方法已被棄用。 [請閱讀](http://api.jquery.com/live/)。 –

2
$('#someParent').on('click', '.someChildSelector', function(e){ 
}); 

監聽click事件冒泡至#someParent指定(即.someChildSelector)選擇器匹配。

因此,源自您附加的任何子元素的事件將被上述處理程序捕獲。

+0

但是,它爲他工作。 –

+0

@RVSharepoint:這不重要。報復式投票並不能幫助任何人。這就像說 - **沒有人會更新他們的jQuery版本。** –

+0

是的,我告訴過你同樣的事情..它也有助於一些人:) –

相關問題