Jquery 中超过了最大调用堆栈大小

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。但我在加载页面时出错: 未捕获范围

我在这里看到了这个HTMl结构:

<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();
});