Jquery 中超过了最大调用堆栈大小
我在这里看到了这个HTMl结构:Jquery 中超过了最大调用堆栈大小,jquery,html,woocommerce,Jquery,Html,Woocommerce,我在这里看到了这个HTMl结构: <li class="description_tab" id="tab-title-description" role="tab" aria-controls="tab-description"> <a href="#tab-description">Description</a> </li> 我试图做的是检查标签是否被点击。如果这是真的,我将在单击的选项卡内触发a。但我在加载页面时出错: 未捕获范围
<li class="description_tab" id="tab-title-description" role="tab" aria-controls="tab-description">
<a href="#tab-description">Description</a>
</li>
我试图做的是检查标签是否被点击。如果这是真的,我将在单击的选项卡内触发a。但我在加载页面时出错:
未捕获范围错误:超过最大调用堆栈大小在String.replace()
位于Function.trim(jquery.js?ver=1.12.4:2)
在新的a.fn.init中(jquery migrate.min.js?ver=1.4.1:2)
在n(jquery.js?ver=1.12.4:2)
至少有一个元素。(custom.js?ver=4.9.8:77)
在htmlilement.dispatch(jquery.js?ver=1.12.4:3)
在htmlilement.r.handle(jquery.js?ver=1.12.4:3)
在Object.trigger上(jquery.js?ver=1.12.4:3)
在Object.a.event.trigger处(jquery migrate.min.js?ver=1.4.1:2)
在兰开夏。(jquery.js?ver=1.12.4:3)
怎么了?这就是它现在的工作原理。正在工作,但有很多代码:
jQuery('body.woocommerce div.product .woocommerce-tabs ul.tabs li').click(function () {
var description = jQuery('.woocommerce-Tabs-panel--description');
var reviews = jQuery('.woocommerce-Tabs-panel--reviews');
if (!jQuery(this).hasClass('active')) {
if (jQuery(this).hasClass('reviews_tab')) {
jQuery('.description_tab').removeClass('active');
jQuery(this).addClass('active');
description.hide();
reviews.show();
} else if (jQuery(this).hasClass('description_tab')) {
jQuery('.reviews_tab').removeClass('active');
jQuery(this).addClass('active');
reviews.hide();
description.show();
}
}
});
我不知道我是否能做得更好。使用$(this)
,而不是this
jQuery('body.woocommerce div.product .woocommerce-tabs ul.tabs li').click(function () {
jQuery('a', $(this)).click();
});
问题在于,您通过从元素上的单击事件引发元素上的单击事件来创建无限递归<代码>我试图做的是检查选项卡是否被单击。如果这是真的,我将在单击的选项卡内触发a。但我在加载页面时出错为什么要这样做?如果你想扩展
a
元素的点击区域,我建议用CSS来代替。在Wordpress中,a元素有一个点击功能,但选项卡没有。所以我不想只点击文本。我还将在单击包围的选项卡时切换内容。正如@RoryMcCrossan所建议的,CSS可以更好地解决这一问题。最简单的解决方案:将a
设置为display:block;身高:100%;宽度:100%
并在a
内添加span标记。然后将所有旧的a
样式更改为a span
。每个选项卡内的a的单击功能是什么?重点是上面的代码是标准的WooCommerce代码,我不想更改它,因为有更新等。$(此)
和这个
在该上下文中的行为是相同的。您知道jQuery是WP?唯一正确的语法?。
jQuery('body.woocommerce div.product .woocommerce-tabs ul.tabs li').click(function () {
jQuery('a', $(this)).click();
});