Jquery没有使用像Jackate这样的插件来为dom添加新添加的元素

我一直在互联网上搜索这个,我找到了一些有用的答案但是它们不足以解决我的问题(例如类似的问题,但我的问题没有提供解决方案 )

我正在使用JRate插件,我使用jQuery在div添加div 。 问题是,当我使用jQuery添加它并使用JRate函数时,它们无法正常工作。 但他们正在努力工作,没有增加新的div

我知道如何让它发挥作用。 我将不得不使用$(document)但我不知道如何使用此代码。

这是HTML

 

这是我的Jquery

 $(".jRate").jRate({ onSet: function(rating) { alert(rating); } }); 

这是我的附加代码

 var divjRate = "
"; $(divjRate).appendTo('.fb-jRate');

任何人都可以告诉我如何在这里使用$(document)或任何其他替代解决方案。

您需要首先附加html元素,以便它在DOM注册。 然后,您可以在其上调用jRate

 var divjRate = "
"; // Append new element to container of choice $(divjRate).appendTo('.fb-jRate'); // Use plugin on new element $('.jRate').jRate({ onSet: function(rating) { alert(rating); } });

您链接的解决方案适用于绑定事件侦听器,而典型的jQuery插件通常涉及DOM替换和其他事情。

您需要将该方法应用于新添加的DOM元素。 由于性能问题,不推荐使用DOM突变事件规范,并且期望浏览器跟踪DOM中发生的所有更改(以及发生何种更改)是不现实的。

例如,如果要使用AJAX调用添加新内容,则可以将该方法应用于jqXHR.done()函数中新添加的内容。


更新 :OP提供了一些代码,所以我添加了一种方法来初始化新添加的DOM元素的插件:

 // Declare new element var divjRate = "
"; // Use plugin on new element $(divjRate).find('.jRate').jRate({ onSet: function(rating) { alert(rating); } }); // Append new element to container of choice $(divjRate).appendTo('.fb-jRate');