我有這個網站herejQuery的事件不會爲附加元素
工作正如你可以看到有「影像」和「網頁模板」選項卡,其中圖像由右至左滑動一個微小的圖像滑塊,然後消失,然後它出現在父元素的最後(在我的情況下爲<tr>
)。
如果您將鼠標懸停在小圖片上,您可以看到它在左側預覽。
到目前爲止這麼好。
但是,如果您等到第一張圖像再次出現,則懸停事件不再有效。
jquery可能無法在<tr>
標籤末尾看到新的附加元素?
我有這個網站herejQuery的事件不會爲附加元素
工作正如你可以看到有「影像」和「網頁模板」選項卡,其中圖像由右至左滑動一個微小的圖像滑塊,然後消失,然後它出現在父元素的最後(在我的情況下爲<tr>
)。
如果您將鼠標懸停在小圖片上,您可以看到它在左側預覽。
到目前爲止這麼好。
但是,如果您等到第一張圖像再次出現,則懸停事件不再有效。
jquery可能無法在<tr>
標籤末尾看到新的附加元素?
綁定事件的方式對於動態添加的元素不起作用。在preview_script.js您有:
$(".box_body img").hover(function(){
這將事件處理器添加到所有的img標籤帶班「box_body」,但那些在後面追加不會得到該事件。
試試這個:
$(document).on("hover", ".box_body img", function() {..});
這將增加該事件記錄,只有火,如果該事件目標是IMG帶class =「box_body」。由於事件傳播了這應該工作,只要它之間沒有任何東西停止之前,它到達文檔(通過調用「event.stopPropagation()」)
如果您知道「.box_body img」的父項,您可以將文檔替換爲這樣會更好一些,因爲您不必等待事件傳播到文檔。
注意,您可以使用完成委託同樣的事情(如果不可用):
$(document).delegate(".box_body img", "hover", function() {..});
感謝您的共享時間.delegate完美地工作 – boyd
您將要使用jQuery的.live()函數,以便將事件處理程序附加到元素這將在未來創建。這裏的DOC:http://api.jquery.com/live/ 這裏的用法:
$(".dynamicButtons").live("hover", function() {
//do stuffs
});
一些代碼會有有用。
您是從開始刪除項目,然後將它們插入到滑塊的末尾?
如果答案是 「是」,你應該使用的
$('selector').delegate('subselector', 'hover', function() {
//your code there
});
代替
$('selector subselector').hover(function() {
//your code there
});
請檢查http://api.jquery.com/delegate/更多信息。
在這裏http://web-art.netau.net/script.js
$(".box_body img").hover(function(){
var src=$(this).attr("src");
var target=$(this).parents("table").attr("id").split("_").pop();
$("#preview_"+target).attr({src:src});
})
線112至116的script.js
更改文件到這背後的以下
$(document).on('mouseenter',".box_body img",function(){
var src=$(this).attr("src");
var target=$(this).parents("table").attr("id").split("_").pop();
$("#preview_"+target).attr({src:src});
});
原因已被SO回答了很多次。搜索並找到一個很好的答案。像
Event binding on dynamically created elements?
請在這裏發表的相關代碼,不要使我們訪問其他網站,並通過源涉水。更好的是,在jsfiddle.net上發佈一個例子。 – j08691
本常見問題解答部分和包含此問題答案的部分。 http://docs.jquery.com/Frequently_Asked_Questions#Why_doesn.27t_an_event_work_on_a_new_element_I.27ve_created.3F –