不确定这是否可行,但是当我最初在通过jQuery script
加载的动态HTML上请求页面时,我正在尝试使用通过load()
标记加载的JavaScript功能
正如您在示例中所看到的,点击弹出框中的链接后链接就会消失。问题是链接被假定为停止,您可能会看到警报。
但是,如果我粘贴我通过jQuery加载的HTML,它可以工作,所以代码很好。
答案 0 :(得分:3)
您需要jQuery .live()
或.on()
方法将事件绑定到动态创建的html。
根据您使用的jQuery版本,选择.live()
或.on()
。
.live()自jQuery 1.3起可用。为现在和将来与当前选择器匹配的所有元素附加事件处理程序。
.on()自jQuery 1.7起可用。将一个或多个事件的事件处理函数附加到所选元素。
查看我的示例和此jsFiddle Demonstration
...适用于jQuery.live()
$('.lang').live("click", function(e) {
e.preventDefault();
alert('Testing..');
});
...对于jQuery.on()
$('.lang').on("click", function(e) {
e.preventDefault();
alert('Testing..');
});
答案 1 :(得分:2)
问题是,您.click
将仅为当时存在的元素执行此操作。如果您希望对该选择器匹配的所有潜在未来元素执行此操作,您希望on()
(delgate()
或live()
使用较旧版本的jQuery。)
答案 2 :(得分:0)
创建元素后必须注册$('.lang').click()
事件!
你需要在load函数上进行回调才能注册它。
答案 3 :(得分:0)
您需要使用live来将处理程序附加到动态加载的元素。
试试这个,它会解决你的问题。
$('。lang')。live('click',function(e){
e.preventDefault();
alert('Testing..');
});
答案 4 :(得分:0)
您必须对动态加载的元素使用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..');
});
(JQuery 1.7+中不推荐使用live
和delegate
,这是JSFiddle的版本)已修复JSFiddle