默认情况下从文档主体实现事件委托
Implement event delegation from document body by default
我的问题始于 IE8 中的一个问题,即通过 ajax(使用 magnificPopup.js)加载包含脚本标签的动态 html 页面时出现的问题。因此我不得不删除所有的 js 代码从这些动态调用的页面并将它们放在一个单独的 .js 文件中,但随后它需要对每个 jQuery 选择器使用 .on,因为当新的 .js 页面与父页面一起加载时,所有元素都不在页面上页。
问:有没有办法让每个 jQuery 选择器
$('#myId') or $('.myClass')
按如下方式工作
$('body').on('click','#myId',function(){
/*my code ...*/
})
似乎正确的解决方案是在 ajax 回调块中调用您的函数。
您可以将您的行为放在一个命名函数中,该函数可以在任何地方加载:
function myFunction() {
$('.myClass').click(function() { ... });
}
然后在通过 ajax:
加载新文件后调用它
$.ajax({...})
.success(function() {
myFunction();
});
我的问题始于 IE8 中的一个问题,即通过 ajax(使用 magnificPopup.js)加载包含脚本标签的动态 html 页面时出现的问题。因此我不得不删除所有的 js 代码从这些动态调用的页面并将它们放在一个单独的 .js 文件中,但随后它需要对每个 jQuery 选择器使用 .on,因为当新的 .js 页面与父页面一起加载时,所有元素都不在页面上页。
问:有没有办法让每个 jQuery 选择器
$('#myId') or $('.myClass')
按如下方式工作
$('body').on('click','#myId',function(){
/*my code ...*/
})
似乎正确的解决方案是在 ajax 回调块中调用您的函数。
您可以将您的行为放在一个命名函数中,该函数可以在任何地方加载:
function myFunction() {
$('.myClass').click(function() { ... });
}
然后在通过 ajax:
加载新文件后调用它$.ajax({...})
.success(function() {
myFunction();
});