11

オプションの 1 つがクリックされると AJAX リクエストをトリガーする選択メニューがあります。リンクから関連するオプションでクリック イベントをトリガーする必要があります。だから私は以下のようなコードを持っています.selectの値を変更しますが、クリックをシミュレートしません:

$('#click').click(function(){
    var value = $(this).attr("rel");
    $('#select').val(value);
    return false;
});

<select id="select" name="select">
    <option>Select...</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
</select>

<a href="#" rel="1" id="click">Click for option 1</a>

どんな助けでも大歓迎です。

4

3 に答える 3

15

オプションでクリック イベントをトリガーしても機能しません。以下はスニペットです。

    $('#click').on('click', function(){
        var value = $(this).attr('rel'); //get the value
        value++; //increment value for the nth-child selector to work

        $('#select')
          .find('option:nth-child(' + value + ')')
          .prop('selected',true)
          .trigger('change'); //trigger a change instead of click

        return false;
    });

ここで同じことを示すフィドルをセットアップしました。これはうまくいくはずです。

クリックを使用する代わりに、変更イベントをトリガーして同じ効果を得ることができます。

于 2015-07-09T16:15:27.437 に答える
5
$('#click').click(function(){
    var value = $(this).attr("rel");
    $('#select')
        .val(value)
        .trigger('click');
    return false;
});

a の値を設定するだけでは<select>、その要素のクリック イベントはトリガーされません。直接呼び出す必要があります。

于 2013-03-21T14:16:22.230 に答える
-2

これは WooCommerce コアの一部であるため、すべてを掲載することはできません。しかし、ここにスニペットがありますが、それがあなたに多くを伝えるかどうかはわかりません...

.on( 'change', '.variations select', function( event ) {

    $variation_form = $(this).closest('form.variations_form');
    $variation_form.find('input[name=variation_id]').val('').change();

    $variation_form
        .trigger( 'woocommerce_variation_select_change' )
        .trigger( 'check_variations', [ '', false ] );

    $(this).blur();

    if( $().uniform && $.isFunction( $.uniform.update ) ) {
        $.uniform.update();
    }

} )
于 2013-03-21T14:33:56.397 に答える