【问题标题】:Loop function not running after WooCommerce cart page updateWooCommerce 购物车页面更新后循环功能未运行
【发布时间】:2021-12-10 21:22:58
【问题描述】:

我正在尝试在 WooCommerce 购物车页面上运行一个简单的循环。 页面最初加载时,该功能会执行此操作,但在更新购物车时,它变得毫无生气。

这是我的循环函数:

let radios = document.querySelectorAll( 'input[name="radio_options_set"]' );

simplySetAttrs();

function simplySetAttrs() {

    // I started the var at 1 to skip the first radio input
    for (var xx = 1; xx < radios.length; xx++) {
        radios[xx].setAttribute( 'onclick', 'dothisFunction( this );' );
    }
}

唯一显示任何响应的 WooCommerce 事件是 'updated_cart_totals',而我在购物车页面上定位的单选按钮是由另一个插件插入的。

我是这样实现的:

jQuery( document.body ).on( 'updated_cart_totals', simplySetAttrs() );

我无法弄清楚为什么最基本的循环不采取行动。如果我执行 alert(),它会按预期工作,即使在设置超时之后也是如此。

我也尝试添加不同的事件侦听器作为设置属性的替代方法,但无济于事。

【问题讨论】:

  • 尝试控制台 radios 并检查是否有任何问题。
  • 会不会是你用错了setAttribute?看这个例子:stackoverflow.com/a/362634/11592836
  • @Bhautik - 是的,radios 的节点列表确实被记录了。
  • 可以分享一下网址吗?
  • @Allart - 我从您发送的链接中找到了前进的方向,并将其与我的问题的答案相结合。这是这个答案中给出的解释:link。谢谢。

标签: javascript jquery woocommerce hook-woocommerce


【解决方案1】:

您可以使用 jQuery attr 来设置属性。试试下面的代码。

let radios = document.querySelectorAll( 'input[name="convert_to_sub"]' );

simplySetAttrs();

function simplySetAttrs() {
    // I started the var at 1 to skip the first radio input
    for (var xx = 1; xx < radios.length; xx++) {
        jQuery(radios[xx]).attr( 'onclick', 'dothisFunction( this );' );
    }
}

【讨论】:

  • 我使用了 jQuery attr 方法并且最初仍然具有相同的行为 - 但这个答案提到了我尝试过的一些东西:link - 我在每个收音机的父级 @987654326 上设置了 attr @ 一切都变得活跃起来。我将通过引用li 项来修改我的代码。非常感谢您帮助创建另一个方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
相关资源
最近更新 更多