0

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

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 的选择元素删除值为 88 和 99 的选项行。我编码错了吗?这是给我的一个例子,但我不确定为什么这两行都有“this”。

4

3 回答 3

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();
    }
}
于 2012-09-28T07:46:32.663 回答
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();
于 2012-09-28T07:48:40.623 回答
0
$("#TopicID option[value='88']").remove();
$("#TopicID option[value='89']").remove();
于 2012-09-28T08:42:15.600 回答