如何使用jQuery从select中删除选项?

时间:2012-09-28 07:40:28

标签: jquery

有人可以告诉我这里我做错了什么:

function onAjaxDone(data) {
    var topicID;

    $('#TopicID')
        .html(data);

    topicID = store.getItem('TopicID');
    if (topicID) {
        $("#TopicID")
            .val(topicID);
        $('option[value="88"]', this).remove();
        $('option[value="99"]', this).remove();
    }
}

我收到错误说“严格失败”并指向带有“this”的行。我想要做的是删除id为TopicID的select元素的值为88和99的选项行。我编码错了吗?这是给我的一个例子,但我不确定为什么这两行都有“这个”。

3 个答案:

答案 0 :(得分:0)

这应该这样做:

function onAjaxDone(data) {
    var topicID, selTopic;

    selTopic = $('#TopicID');
    selTopic.html(data);

    topicID = store.getItem('TopicID');
    if (topicID) {
        selTopic.val(topicID);
        $('option[value="88"]', selTopic).remove();
        $('option[value="99"]', selTopic).remove();
        //or
        //selTopic.val(topicID)
        //.find('option[value="88"]').remove().end()
        //.find('option[value="99"]').remove();
    }
}

答案 1 :(得分:0)

这取自jQuery文档

jQuery( selector [, context] )
  selector: A string containing a selector expression
  context: A DOM Element, Document, or jQuery to use as context

这意味着您使用的 this 应该指向其中一个子元素是两个选项的DOM元素,但显然它不是。

您应该将其更改为

$('option[value="88"]', el).remove();
$('option[value="99"]', el).remove();

其中 el

的形式或选择或任何父元素
<option value='88'></option>
<option value='89'></option>

或者,如果您确定在整个网页中只有 两个选项,那么您可以这样做

$('option[value="88"]').remove();
$('option[value="99"]').remove();

答案 2 :(得分:0)

$("#TopicID option[value='88']").remove();
$("#TopicID option[value='89']").remove();