如果 select 菜单没有 select 属性,则使用 jQuery 执行功能

Using jQuery to perform a function IF a select menu has no select attribute

所以,我正在处理几个不同的插件,如果 select 菜单没有属性,我需要能够执行一个功能。我对此感到困惑,并查找了许多不同的方法,但到目前为止都没有成功。

我有一个 select 结构如下:

<div class="quantity_select">
<select name="cart[d3207bfbf377b2c6a2d5f0f397ecef61][qty]" title="Qty" class="qty">
        <option value="500" data-qty="500" data-price="0.27" selected="">
            500&nbsp;envelopes&nbsp;5.00            </option>
        <option value="1000" data-qty="1000" data-price="0.18">
            1000&nbsp;envelopes&nbsp;0.00            </option>
        <option value="2000" data-qty="2000" data-price="0.15">
            2000&nbsp;envelopes&nbsp;0.00            </option>
        <option value="5000" data-qty="5000" data-price="0.15">
            5000&nbsp;envelopes&nbsp;0.00            </option>
</select>
</div>

而且我需要能够验证这是或不是 selected 并根据结果执行或不执行功能。所以这是我正在使用的脚本:

$('.qty').each(function(i, obj) {
    if ( !$('option:selected',this).index() <= 0) {
            $('.actions').find('input[name="update_cart"]').click();
        }
});

会有多个select具有相同的class qty所以它需要循环检查每个

我不确定我做错了什么。是 'option:selected',this 吗?我想这行得通。控制台也没有抛出任何错误,所以我实际上并没有验证它是否被选中?

我的测试页上有两个 select,一个有 selected="",一个没有,所以它应该触发。

您可能想试试:

$('.qty').each(function(i, obj) {
    if ( $('option:selected',this).length > 0) {
            $('.actions').find('input[name="update_cart"]').click();
        }
});

$('option:selected',this) returns 选定选项的数组,因此检查数组的索引可能不起作用。