如何用$(document).on()替换$(document).ready()

时间:2016-05-11 13:30:09

标签: jquery dom clone

我对JQuery很陌生。我使用this JQuery函数来显示元素的工具提示。

我根据自己的需要(在这个社区的帮助下)以这种方式编辑了代码:

$(document).ready(function() {  
   $('.toolTipField').each(function() {
     $(this).tooltipster({
         content: $('<span>' + $(this).attr("data-tooltipText") + '</span>')
     });
   });
});

我还需要在使用此JQuery函数添加到DOM的元素上显示工具提示:

$("#element").clone().appendTo("#target")

现在工具提示并不适用于使用JQuery添加到DOM的元素。在互联网上我发现我必须使用方法on()而不是ready(),但我不知道如何正确编辑我的代码。

感谢大家。

3 个答案:

答案 0 :(得分:4)

事件委托无法解决您的问题。它不会同步检测何时将元素添加到文档中。您需要手动调用代码来添加工具提示。最好的办法是将代码分解出来,以便它可以重复使用,然后在准备就绪和克隆元素时调用方法。

function addToolTips (elems) {
   elems.each(function() {
     $(this).tooltipster({
         content: $('<span>' + $(this).attr("data-tooltipText") + '</span>')
     });
   });
}


$(document).ready(function() {  
   addToolTips($('.toolTipField'))
});

并克隆元素

var clonedElem = $("#element").clone().appendTo("#target");
addToolTips(clonedElem);

答案 1 :(得分:2)

var myClone = $('el').clone(); 
myClone.appendTo('target'); 
myClone.tooltipster({....});

答案 2 :(得分:-1)

jQuery为您提供当时存在的元素,而不是您稍后添加的元素。如果添加它们,则还必须添加工具提示