[英]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..');
});
( live
和delegate
在JQuery 1.7+中被棄用,這是你的JSFiddle的版本)
修復了JSFiddle
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.