我可以使用jQuery来检查列表项是否存在?

时间:2011-12-27 02:51:35

标签: jquery

我有以下选择列表:

<select id="AccountID">
  <option value='0000'>Select Account</option>
  <option value='002M'>test1</option>
  <option value='002N'>test2</option>
  <option value='002P'>test3</option>
</select>

用户进行新选择后,我需要执行以下操作,将上面的列表替换为不包含“选择帐户”选项的列表

function SelectAccounts() {
    $.ajax({
        url: "/Administration/Accounts/GetOptions",
        data: { ds: $('#DataSourceID').val(),
            ac: '0000'
        },
        success: function (data) {
            $('#AccountID').html(data);
        }
    });
}

有没有办法可以改变:

$('#AccountID').change(SelectAccounts);

这样它只调用SelectAccounts IF如果选择列表中有一个选项“0000”?

4 个答案:

答案 0 :(得分:3)

当然,只需使用匿名函数:

$('#AccountID').change(function() {
  if ($(this).find('option[value="0000"]').length > 0) {
    SelectAccounts();
  } else {
    // Option not present
  }
);

或选择器:

$(document).on('change', '#AccountID:has(option[value="0000"])', SelectAccounts);
// Use a more specific selector for the parent of `#AccountID`.

答案 1 :(得分:2)

在一般意义上,您可以测试select元素是否具有特定选项,如下所示:

if ($("#AccountID option[value='0000']").length > 0) {
    // option exists
}

但是,您最好只删除更改处理程序:

// within the success handler of your ajax call:

$("#AccountID").html(data).off("change");

或者,如果使用旧版本的jQuery,请使用.unbind("change")

答案 2 :(得分:1)

当然,你只要问:

if(!!$("#AccountID option[value=0000]").length)) {
    // code
}

答案 3 :(得分:1)

您可以尝试:

$('#AccountID').change(function() {
  if ($(this).find('option[value="0000"]').length > 0) {
    SelectAccounts();
  }
});

好奇,你真的需要使用AJAX改变选项吗?如果它们非常简单,可以提前做好准备吗?