2011-11-30 15 views
2

使用jQuery,我已將$('content').load -ed文本放到我的網頁上。內容包括我想回應點擊事件的新ID。這可能嗎? 這裏的腳本...jQuery .load -ed ID可以響應點擊事件嗎?

$(document).ready(function(){ 
     $("ul.nav li:eq(3)").click(function(){ 
     $('.content').load('gpstart.html #product').fadeIn('slow'); 
     }); 
}); 

回答

0

二者必選其一

$('.content').on('click', '#your-element-id', function(){ }); 

$('.content').delegate('click','#your-element-id', function(){ }); 

儘量不要委託給document作爲事件將不得不泡一路上漲的DOM,因爲你知道你的元素裏面的內容那麼您可以將該事件委託給該元素。

1

您可以使用livedelegate方法綁定到單擊事件,將在未來創建(加載)的元素。

+1

不要忘記.on() –

+0

'.live'從jQuery 1.7開始已被棄用。另外,'.delegate()'不被棄用,但是被替換爲'.on()'(從1.7開始)。 – simshaun

+0

乾杯我仍然在1.6 –

1

是的,使用jQuery.on()

$(document).ready(function(){ 
    $(document).on('click', '#some_id', function() { 
     // do something 
    }); 

    $("ul.nav li:eq(3)").click(function(){ 
    $('.content').load('gpstart.html #product').fadeIn('slow'); 
    }); 
}); 
0

是的,但是.click(function() {}).bind('click', function() {})一個快捷方式,並.bind()僅適用於那些在DOM事件時必然要素。

的jQuery> = 1.7

$(document).on('click', '#my-dynamicly-inserted-id', function() { 
    //your click handler here for the `.load`-ed element 
}); 

jQuery的< 1.7

$(document).delegate('#my-dynamicly-inserted-id', 'click', function() { 
    //your click handler here 
}); 

我不推薦使用.live()因爲它是同樣的事情$(document).delegate(),它是貶值在jQuery 1.7。