【问题标题】:jQuery simulate click event on select optionjQuery在选择选项上模拟点击事件
【发布时间】:2013-03-11 02:34:40
【问题描述】:

我有一个选择菜单,一旦单击其中一个选项,就会触发 AJAX 请求。我需要从链接中触发相关选项的点击事件。所以我有类似于下面的代码,虽然它改变了选择的值,但它并没有模拟点击:

$('#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>

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery select click option


    【解决方案1】:

    在选项上触发点击事件将不起作用。这是一个 sn-p:

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

    我已经设置了一个小提琴here 显示相同的内容。 这应该可以。

    您可以触发更改事件并达到相同的效果,而不是使用单击。

    【讨论】:

    • IMO 你的答案更好,因为许多选择都有 onchange 功能:)
    • 我没有意识到'nth-child'从1开始不是0 - api.jquery.com/nth-child-selector: “因为jQuery的实现: nth- 选择器严格派生自 CSS 规范,n 的值是“1-indexed”,表示从 1 开始计数。“ 不错的指针,谢谢
    【解决方案2】:

    它是 WooCommerce 核心的一部分,所以我不能全部发布。但是这里有一个 sn-p,虽然我不太确定它是否会告诉你很多...

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

    【讨论】:

      【解决方案3】:
      $('#click').click(function(){
          var value = $(this).attr("rel");
          $('#select')
              .val(value)
              .trigger('click');
          return false;
      });
      

      仅仅设置&lt;select&gt; 的值不会触发该元素的点击事件;必须直接调用。

      【讨论】:

      • 感谢您的回复。这确实有道理,但我已经实现了上面的示例,它仍然没有触发选择选项时进行的 AJAX 调用。有什么想法吗?
      • 不触发click事件,而是触发change事件。
      猜你喜欢
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 2011-05-05
      相关资源
      最近更新 更多