2014-02-24 57 views
0

我知道我應該使用.on附加點擊事件ty我動態添加的組件。實際上,我在頁面的某些組件中使用它,它確實有效。jquery點擊動態組件

here:http://cacharro.ole32.com/shopping/你可以看到我的頁面。

當您單擊其中一個部分(對於西班牙語感到抱歉)時,它會與點擊進行交互,但是當點擊其中一個內部元素時,交互不會發生。

這是應該工作的一段簡單的代碼。

$(document).on('click', ".item", function(){ 
    itemOnMarketClicked($(this)); 
}); 

不知道爲什麼它不....

EDIT1:

我注意到,點擊$('#marketList').find('li:has(ul)').on('click',....時被調用。一旦它在這裏被捕獲,它可能以某種方式不會被傳播到列表中?

編輯2: intemMarketCliked的代碼被請求。它是:

function itemOnMarketClicked(item){ 
    $("#currentList").append("<div class='itemOnList' id='List_"+item[0].id+"'>"+item[0].innerText+"</div>"); 
    item.slideUp(100, function(){item.remove()}); 
} 

這個想法是將單擊的元素追加到另一個列表中,並從當前列表中刪除它。

+3

發佈提琴不是你的網站 – laaposto

+0

我更喜歡顯示我的網站,因爲我擔心問題是網站不同部分之間的碰撞。單一聲明按預期工作,但不在我的網站中,在所有其他的東西之中。 – javirs

回答

1

看到我看到您的代碼,您必須將click事件放在init()函數之外,以便它始終可按預期完成工作。

$(function(){ 
    $(document).on('click', ".item", function(){ 
     itemOnMarketClicked($(this)); 
    }); 
}); 

嘗試把你的所有點擊事件初始化函數的外面,因爲你已經委派事件到document所以你不必把它在文檔準備好塊,它可以工作,但還是你必須把它在init()功能之外。

+0

它無法啓動該功能,無論如何。 – javirs

+0

如果你可以發佈這個函數'itemOnMarketClicked()' – Jai

+0

你可以調試並注意函數不會被調用。所以其內容並不真正相關。無論如何,我在問題中爲你添加了內容。 – javirs