Jquery触发器更改似乎没有触发功能

Jquery trigger change does not seem to trigger function

提问人:NSsem 提问时间:9/12/2023 最后编辑:freedomn-mNSsem 更新时间:9/13/2023 访问量:38

问:

我的 Web 应用程序上有这个范围滑块,我的代码的目标是这样的: 当我滑动范围滑块时,它的值使用 jquery 进入数字字段,然后我触发此数字输入字段的更改,之后它应该激活某处定义的函数。

滑块更改的侦听器(已检查选择器是否有效并针对正确的元素):

    $('.summary').on('change', 'input[type="range"]', function(){
        console.log('confimation');
        $(this).parent().parent().find('.quantity input[type="number"]').val($(this).val()).attr('value', $(this).val());
        $(this).closest('.bundled_item_button').find('input.bundled_qty').trigger('change');
    });

我想用上面的代码触发的数字字段的侦听器(很高兴知道这里是控制台.log返回input.bundled_qty):

this.bind_bundled_item_event_handlers = function( bundled_item ) {
            console.log(bundled_item.$self);
            bundled_item.$self

                /**
                 * Update totals upon changing quantities.
                 */
                .on( 'input change', 'input.bundled_qty', function( event ) {
                    console.log('gevuurd');
                    var $input = $( this ),
                        qty    = parseFloat( $input.val() ),
                        min    = parseFloat( $input.attr( 'min' ) ),
                        max    = parseFloat( $input.attr( 'max' ) );

                    if ( wc_bundle_params.force_min_max_qty_input === 'yes' && 'change' === event.type ) {

                        if ( min >= 0 && ( qty < min || isNaN( qty ) ) ) {
                            qty = min;
                        }

                        if ( max > 0 && qty > max ) {
                            qty = max;
                        }

                        $input.val( qty );
                    }

                    // A zero quantity item is considered optional by NYP.
                    if( bundled_item.is_nyp() && ! bundled_item.is_optional() && min === 0 ) {
                        bundled_item.$nyp.data( 'optional_status', qty > 0 ? true : false );
                    }

                    bundled_item.update_selection_title();

                    bundle.$bundle_data.trigger( 'woocommerce-product-bundle-update', [ bundled_item ] );
                } )
}

当我滑动范围滑块时,它不会向控制台回显任何内容。 对我来说奇怪的是,如果我在同一个 javascript 文件中创建一个新的侦听器,作为针对数字输入的第一个 snippit,它确实会向控制台回显一些东西

$('.cart').on('input change', 'input.bundled_qty', function(){
        console.log('changed');
});

最后是 HTML:

<div class="cart" data-title="Stokâlde fryske - 220gram" data-product_title="Stokâlde fryske - 220gram" data-visible="yes" data-optional_suffix="" data-optional="no" data-type="simple" data-bundled_item_id="4" data-custom_data="[]" data-product_id="181"
  data-bundle_id="168">
  <div class="bundled_item_wrap">
    <div class="bundled_item_cart_content">
      <div class="bundled_item_cart_details"><span class="price"><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">€</span>4.75</span> <span class="bundled_item_price_quantity">each</span></span>
      </div>
      <div class="bundled_item_after_cart_details bundled_item_button">
        <div class="quantity">
          <label class="screen-reader-text" for="quantity_6500736040691">Stokâlde fryske - 220gram aantal</label>
          <input type="number" id="quantity_6500736040691" class="input-text qty bundled_qty text" name="bundle_quantity_4" value="2" aria-label="Productaantal" size="4" min="0" max="4" step="1" placeholder="" inputmode="numeric" autocomplete="off">
        </div>
        <div class="quantity"><input type="range" min="0" max="4" name="quantityslider"></div>
      </div>
    </div>

我在这里错过了什么?提前致谢!

JavaScript jQuery DOM 触发器

评论

1赞 mykaf 9/12/2023
您还应该包含相关的 html。
1赞 mykaf 9/12/2023
没有具有类“summary”的元素。上下文是什么?指的是什么?this.bind_bundled_item_event_handlers...this
1赞 freedomn-m 9/12/2023
似乎也没有实体具有代码“有效”中引用的类。has_qty_input
1赞 freedomn-m 9/12/2023
请参阅最小可重现示例并尝试创建一个片段(编辑并单击)来演示该问题 - 它需要是所有相关的代码/上下文,但只有相关的代码/上下文(即 parseFloat min/max 代码似乎与问题无关,因此不应包含)。[<>]
1赞 freedomn-m 9/12/2023
始终检查您的选择器 - 如有疑问,请检查您的选择器是否正常工作 - 即 .以及检查您的事件是否正在触发 - 在提供的代码中,它不会触发,如上所述,没有元素,因此我们无法确认这是 的子项console.log($(this).closest('.bundled_item_button').length, $(this).closest('.bundled_item_button').find('input.bundled_qty').length)changesummarysummarysummarybundled_item_button

答: 暂无答案