我遇到的情况是,我的DOM元素是基于$.getJSON动态生成的,这个元素的Javascript函数不起作用。我将在我的代码上发布一些一般性的想法,因为我只是在寻找在这种情况下应该做什么的方向。
site.js包含以下一般特性:
$(document).ready(function() {
$('.element').on('click', function() {
$(this).toggleClass('active');
});
$(".slider").slider({
// some slider UI code...
});
});之后:
$.getJSON('json/questions.json', function (data) {
// generating some DOM elements...
});我还尝试将所有site.js内容打包到函数refresh_scripts()中,并在$.getJSON()之后调用它,但似乎没有什么效果。
发布于 2016-11-11 16:59:36
首先,您需要使用委托的事件处理程序来捕获动态附加元素上的事件。然后,您可以在成功处理程序函数中再次调用.slider()方法来实例化新附加的内容上的插件。试试这个:
$(document).ready(function(){
$('#parentElement').on('click', '.element', function() {
$(this).toggleClass('active');
});
var sliderOptions = { /* slider options here */ };
$(".slider").slider(sliderOptions);
$.getJSON('json/questions.json', function(data) {
// generating some DOM elements...
$('#parentElement .slider').slider(sliderOptions);
});
}); https://stackoverflow.com/questions/40552700
复制相似问题