簡體   English   中英

在通過jQuery的load()函數加載的HTML上使用已經加載的JS?

[英]Use JS that is already loaded, on HTML loaded via jQuery's load() function?

不確定這是否可行,但是當我最初在通過jQuery的load()函數加載的動態HTML上請求頁面時,我正在嘗試使用通過script標記加載的JavaScript。

示例: http//jsfiddle.net/3MR43/

正如您在示例中所看到的,在彈出框中單擊鏈接后,鏈接就會出現。 問題是鏈接被假定為已停止,您可能會看到警報。

但是,如果我粘貼我通過jQuery加載的HTML,它可以工作,所以代碼很好。

描述

您需要jQuery .live().on()方法將事件綁定到動態創建的html。

根據您使用的jQuery版本選擇.live().on()

.live()自jQuery 1.3起可用。 為現在和將來與當前選擇器匹配的所有元素附加事件處理程序。

.on()自jQuery 1.7起可用。 將一個或多個事件的事件處理函數附加到所選元素。

看看我的樣本和這個jsFiddle演示

樣品

...對於jQuery.live()

$('.lang').live("click", function(e) {   
    e.preventDefault();  
    alert('Testing..');        
});

...對於jQuery.on()

$('.lang').on("click", function(e) {   
    e.preventDefault();  
    alert('Testing..');        
});

更多信息

問題是你的.click只會為當時存在的元素執行此操作 如果要對該選擇器將匹配的所有潛在的未來元素執行此操作,則需要使用on()delgate()live()與舊版本的jQuery)。

必須在創建元素后注冊$('.lang').click()事件!

您需要在load函數上進行回調以注冊它。

您需要使用live來將處理程序附加到動態加載的元素。

試試這個,它會解決你的問題。

$('。lang')。live('click',function(e){

    e.preventDefault();

    alert('Testing..');

});

您必須對動態加載的元素使用on函數:

    $('.open_lang').click(function(e) {      
    e.preventDefault();    
    $('#popup').load('http://skins.thehabbos.org/pop_up/language.php').css('display', 'block');            
});

$('body').on('click', '.lang', function(e) {    
    e.preventDefault();  
    alert('Testing..');        
});

livedelegate在JQuery 1.7+中被棄用,這是你的JSFiddle的版本)

修復了JSFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM