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

「failedstrict」というエラーが表示され、「this」の行を指しています。私がやりたいのは、TopicIDのidを持つselect要素の値が88と99のオプション行を削除することです。私はこれを間違ってコーディングしていますか?これは私に与えられた例でしたが、なぜ「これ」がこれらの2行にあるのかわかりません。

4

3 に答える 3

0

これは、jQuery のドキュメントから取得されます。

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

これは、使用したthisが、子が 2 つのオプションである DOM 要素の 1 つを指すことになっていることを意味しますが、明らかにそうではありません。

次のように変更する必要があります

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

ここで、elは form または select または任意の親要素です

<option value='88'></option>
<option value='89'></option>

または、Web ページ全体でこれらの値を持つオプションが 2 つしかないことが確実な場合は、次のようにします。

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