2016-02-15 126 views
0

我有一個問題。我有一個函數dropcopy(),它調用一個div來拖動&。克隆jQuery不工作監聽器

function dropcopy(ev) { 

    ev.preventDefault(); 
    elencoOggetti = new Array(); 
    var copyimg = document.getElementById(data).cloneNode(true); 
    //copyimg.id = data;  
    ev.target.appendChild(copyimg); 

} 

該函數複製對象,但不能將偵聽器工作在克隆上。聽衆是這樣的

$("#filtro").click(function() { 
    alert('ciao'); 
}); 

爲什麼它不工作?請幫幫我。

回答

0

首先,你不應該在不改變其id的情況下克隆一個元素。 ID必須是唯一的。

事件監聽器在創建時綁定到第一個元素。克隆沒有綁定偵聽器。您可以再次綁定它,或將偵聽器綁定到父對象而不是對象本身。你可以是這樣做的:

$('body').on('click', '#filtro', function(){ 
    alert('ciao'); 
}); 

這意味着監聽器貼在身上,而不是元素本身,如果該事件是由#filtro解僱它會被解僱只。

0

我相信你有約束力的元素,當它不存在,所以加護:

$(document).ready(function(){ 
$("#filtro").click(function(){ 
     alert('ciao'); 
    }); 
} 

如果克隆後想將它綁定,你可以重新運行上面的這個功能:

function resetUI(){ 

    $("#filtro").click(function(){ 
    alert('ciao'); 
    }); 
} 

或者覆蓋DOM,看看jquery的文檔,如果你想綁定到更新的每個名字。