我这里有一个创建工具提示的函数,这些工具提示是在具有无限滚动的页面上创建的(例如,一旦我们点击页面底部,该函数就会再次被调用),也许值得一提的是我也使用 jScrollPane 作为一个自定义滚动,它与我的工具提示功能同时重新初始化。
问题在于,每次重新初始化函数时,我的工具提示都会一次充满多个图像,每次重新初始化都会在无限滚动回调中重复。
这是功能:
function tooltipsInit() {
//Setting the targeted elements variable
var appliesTo = '.products .products-grid li .product-image-visible a, .featured .products-grid li .product-image-visible a, .new .products-grid li .product-image-visible a, .popular .products-grid li .product-image-visible a';
jQuery(appliesTo).mouseenter(function() {
jQuery(this).children('p').addClass('active');
if((navigator.platform.indexOf("iPad") != -1) || (navigator.platform.indexOf("iPhone") != -1)) {
//disabling the tooltips on iPad/iPhone
} else {
jQuery('body .wrapper').append('<div class="hcontainer"><div class="image"></div><div class="title"></div></div>');
jQuery(this).children('img').clone().appendTo('.hcontainer .image');
title = jQuery(this).children('img').attr('alt');
jQuery('.hcontainer .title').append(title);
jQuery('.hcontainer').fadeIn(200);
function removeDuplicates() {
//THIS IS MY QUESTION RELATED TO
jQuery.removeData();
}
removeDuplicates();
}
});
jQuery(appliesTo).mousemove(function(e) {
offsetX = 235;
offsetY = 175;
windowHeight = jQuery(window).height();
windowWidth = jQuery(window).width();
ypos = 0;
xpos = 0;
if((e.pageY + 355) < windowHeight) {
ypos = e.pageY + offsetY;
} else {
ypos = e.pageY - (offsetY + 30);
}
if((e.pageX + 455) < windowWidth) {
xpos = e.pageX + offsetX;
} else {
xpos = e.pageX - (offsetX + 30);
}
jQuery(".hcontainer").css("top", (ypos) + "px").css("left", (xpos) + "px");
});
jQuery(appliesTo).mouseleave(function() {
jQuery(this).children('p').removeClass('active');
jQuery('.hcontainer').fadeOut(100).remove();
});
};
像这样我正在清除整个 DOM 数据(对吗?),我在 Chrome 开发工具中遇到了一些错误。
Uncaught TypeError: Cannot read property 'nodeName' of undefined jquery-1.8.3.min.js:1719
jQuery.extend.acceptData jquery-1.8.3.min.js:1719
jQuery.extend.removeData jquery-1.8.3.min.js:1633
removeDuplicates custom-scripts.js:160
(anonymous function) custom-scripts.js:162
jQuery.event.special.(anonymous function).handle jquery-1.8.3.min.js:3344
jQuery.event.dispatch jquery-1.8.3.min.js:3058
elemData.handle.eventHandle
我该怎么做才能准确地选择添加到 DOM 的数据并只删除它?
像:removeData(mytooltipfunctionsData)
同样在同一主题上,我对 Javascript/jQuery 还很陌生,您将如何改进该功能?
编辑
我很愚蠢......我仔细看看你在那里写的东西,我仍然在一个会被调用的函数中运行它......然后我意识到你在那里所做的不需要一个函数,因为你说,这是事件委托:)。
谢谢,它工作!无限滚动没有重复和错误。