Javascript 通过jquery每个方法弹出新窗口时出现问题(打开多个窗口)
我已经创建了一个JS提琴来说明这个问题 我有一些宣传片/模块,我正在通过JS将它们变成大目标链接。基本上,整个promo/模块成为一个链接,而不仅仅是一个小小的子锚点/html文本链接。您可以单击促销/模块上的任意位置,以跟随子href 我需要其中一些来在一个新窗口中打开href——我只是连接到这个窗口的target属性。如果链接具有目标属性,则意味着弹出一个新窗口。当我做一些测试和点击时,我遇到了打开多个窗口的问题 在jsfiddle中,第一个模块跟随窗口中的href。第二个和第三个应该弹出新窗口。它们不是很正常,有时一个可以正常工作,但是当你关闭新窗口并再次单击链接时,它会在2新窗口中弹出urlJavascript 通过jquery每个方法弹出新窗口时出现问题(打开多个窗口),javascript,jquery,window,Javascript,Jquery,Window,我已经创建了一个JS提琴来说明这个问题 我有一些宣传片/模块,我正在通过JS将它们变成大目标链接。基本上,整个promo/模块成为一个链接,而不仅仅是一个小小的子锚点/html文本链接。您可以单击促销/模块上的任意位置,以跟随子href 我需要其中一些来在一个新窗口中打开href——我只是连接到这个窗口的target属性。如果链接具有目标属性,则意味着弹出一个新窗口。当我做一些测试和点击时,我遇到了打开多个窗口的问题 在jsfiddle中,第一个模块跟随窗口中的href。第二个和第三个应该弹出新
有人有什么想法吗?你把事情弄得比实际情况复杂得多。相反,在JS中执行以下操作:
$('.promoBigLink').click(function () {
window.open($(this).find('a').attr('href'));
});
此代码使用promoBigLink
类获取所有元素,并打开它在其子元素中找到的第一个锚元素的href
当然,假设每个promoBigLink
中的第一个锚元素是应该访问的锚元素。将CSS样式移动到
标记或单独的文件中。您可能必须处理有人单击锚定标记本身的情况
希望这有帮助 一个可能更好的解决方案是向上移动
A
,使其完全填满该区域。如果你给那一个文本装饰的CSS:none
,它看起来是一样的,没有怪癖。它也更容易访问,因为你现在也可以右击整个区域来复制URL,等等
您需要将div
包装成一个新的a
,它现在代表链接和目标
(函数($){
$.fn.promoBigLink=函数(){
返回此.wrap(函数(){
var href=$(this).find(“a”).attr('href'),//save href+target
target=$(this.find(“a”).attr(“target”);
//使用href+target将div包装到新的a中,并添加类
返回$(“”,{href:href,
target:target}).addClass(“biglink”);
});
};
})(jQuery);
$(函数(){
$('div.promoBigLink').promoBigLink();
});
问题在于,每当用户将鼠标悬停在div上时,您就会附加另一个click事件侦听器!请在控制台中查看并注意“附加click listener”调用的频率
Kelly的解决方案要简单得多,但是您的实现的问题正如我所描述的。修复了此问题。问题在于每次将鼠标悬停在链接上时,它都在读取单击事件
$(this).unbind('click');
您可以在悬停的out侦听器中使用jquery unbind来解除click事件的绑定
$(this).unbind('click');
但是,最好使用其他一些建议重构代码