Javascript Jquery插件不适用于通过Ajax加载的元素

Javascript Jquery插件不适用于通过Ajax加载的元素,javascript,jquery,ajax,Javascript,Jquery,Ajax,描述:我正在处理一个项目,该项目加载从我的数据库派生的过期日期的元素。我使用的Jquery插件使用HTML5数据类型属性作为结束日期。当元素被加载到DOM中时,所有这些都能很好地工作,但是我不知道如何让这个插件在通过ajax加载的元素上运行,这些元素通过滚动函数触发。诚然,Javascript不是我的强项,我也不是在寻找一个编码的答案。。。我只是在找方向。很明显,有一些事情我根本不知道,或者我对问题的理解已经停止了,因为4天的谷歌搜索和反复试验并没有产生任何结果。谢谢大家 编辑:这就是我试过的-

描述:我正在处理一个项目,该项目加载从我的数据库派生的过期日期的元素。我使用的Jquery插件使用HTML5数据类型属性作为结束日期。当元素被加载到DOM中时,所有这些都能很好地工作,但是我不知道如何让这个插件在通过ajax加载的元素上运行,这些元素通过滚动函数触发。诚然,Javascript不是我的强项,我也不是在寻找一个编码的答案。。。我只是在找方向。很明显,有一些事情我根本不知道,或者我对问题的理解已经停止了,因为4天的谷歌搜索和反复试验并没有产生任何结果。谢谢大家

编辑:这就是我试过的-

1一个完整的函数-

$(document).ajaxComplete( function(){ $('.countdown').countdown(); });
2添加在我的php结果中回显的脚本标记-

<script>$('.countdown').countdown();</script>
这三个都成功地调用了脚本。我能说出来,因为div实际上被内容填充了,但是,我在计时器中得到了所有的零。

尝试使用live:


它适用于在初始文档之后加载的元素。ready

使用带有事件委派表单的.on方法。这主要包括将事件的侦听委派给您尝试侦听的元素的最近父节点。 根据经验,始终将事件委托给已存在于dom中的最近父级。不要因为性能原因而一路上文档

比如:

$closest-parent-of-the-element.on您想要的事件,通过ajax加载元素,函数e{ //侦听器代码在这里 }


这应该可以解决问题。

在ajax成功中重新初始化插件。您使用的插件是什么?也许你应该使用事件委派?@ShaunakD,我试图重新初始化插件,但没有成功。你能描述一下怎么做吗?我试着用getScript调用它,我试着在插件中命名主函数,并将其用作回调函数。因此,我们可以调试或帮助它。@putvande,这是指向GitHub上的脚本的链接-该脚本已被长期弃用并删除。感谢您的澄清,并为错误的建议感到抱歉。谢谢Guillermo,但我不确定这是否解决了我的问题。我知道这个方法会将事件监听器添加到当前和将来的元素中,但是,我的问题是jquery倒计时插件在所有元素上运行,类为.countdown,并且有一个数据类型属性,但是没有像单击事件那样的特定触发器。插件在动态加载的元素上运行,但它无法识别数据类型属性中的信息。我希望我解释得对吗?再次感谢你的帮助。事实证明,我看待问题的方式是完全错误的。。。插件在动态添加的元素上运行,但插件无法使用数据类型属性。我改变了一个不同的倒计时插件,并按id在每个元素上运行脚本,它的工作方式就像一个冠军!谢谢大家的意见。
$(function() {
    $(window).scroll(function() {
        if($(window).scrollTop() + $(window).height() == $(document).height()) {
            if (is_loading == false) { // stop loading many times for the same page
                // set is_loading to true to refuse new loading
                is_loading = true;

                // display the waiting loader
                $('#loader').show(500);

                // execute an ajax query to load more statments
                $.ajax({
                    url: 'JSON-TEST/load_more.php',
                    type: 'POST',
                    data: {last_id:last_id},
                    success:function(data){
                        // now we have the response, so hide the loader
                        $('#loader').hide(500);
                        // append: add the new statments to the existing data
                        $('#content').append(data);
                        // set is_loading to false to accept new loading
                        is_loading = false;
                        $('.countdown').countdown();

                    }
                });

            }
       }
    });
});