2013-04-12 75 views
1

我正在研究一個結合了HTMLJQuery的項目。有一個事件可以從外部html文件(使用load('some.html #someDiv'))取代div和新的div)。收聽從外部文件加載到div的元素上的事件

到目前爲止,問題開始時,我試圖聽一個事件(click如果很重要)的IMG,這是新的div的一部分。

我猜這跟我沒有在ready函數中定義該img的點擊事件有關,因爲圖像在當時並不存在。

反正沒有什麼我能想到的解決這個似乎沒有work..Thanks的助手

+0

你有任何代碼或錯誤,這可能會發生? – jycr753

+0

你想知道**事件代表團** http://lab.distilldesign.com/event-delegation/ – Nelson

+0

你的問題是它不會將處理程序綁定到新加載的元素? (即它是否將處理程序成功綁定到已經加載的元素?) –

回答

3

使用.on()

$(document).on('click','#newDiv img',function(){ 

}); 
1

使用.on()http://api.jquery.com/on/

$(document).on('click','.someNevDiv img', function() { 
    // Code on click 
}); 

與您的代碼:

$("#newDiv").click(function() { onNewDivClicked(); }); 

應該是:

$(document).on('click', '#newDiv', function() { 
    onNewDivClicked(); 
}); 
+0

也許是一個愚蠢的問題,但我應該在哪裏寫它? – user1908466

+0

在同一個地方,你會放置一個常規的'$(element).click()'事件。一般在'$(document).ready(function(){// here});':) – Kaloyan

+0

多數民衆贊成在我原來的嘗試。它看起來像這樣: '$( 「#newDiv」)點擊(函數(){ \t \t onNewDivClicked(); \t});' 問題是(我認爲)沒有 'newDiv' DIV在調用ready函數的頁面中 – user1908466

0

試試你添加的元素結合後點擊:

根據jQuery的文檔這裏

即: http://api.jquery.com/load/#callback-function

你應該能夠做這樣的事:

$('#result').load('ajax/test.html', function() { 
    $('#result img').bind('click', function(){ 
     alert('this is fired on a click event on images inside of #result'); 
    }); 
});