2

DOM でオプション タグを削除することは私にとっては問題ではありませんが、変数内のオプション タグを削除する必要があります。これは私が持っているものです:

var txt = "<select name='example'><option value='1'>Test</option></select>";
$(txt).find("select option[value='" + $(this).attr("id") + "']").remove();

セレクターは正しいようです。text() でデバッグしたところ、正しい値が得られました。しかし、変数 txt は変更されません。何が間違っていたのでしょうか?

4

6 に答える 6

2

selectセレクターでは使用しないでください。そして$()、最初にそれを jQuery オブジェクトにするために使用する必要があります。その後、それを操作できます。

var txt = "<select name='example'><option value='1'>Test</option></select>",
    $txt = $(txt);
$txt.find("option[value='" + $(this).attr("id") + "']").remove();
于 2012-08-02T09:54:49.950 に答える
1

の値がtxt変更されることを期待していた場合は変更されません - jQuery はそれを変更しません (変更できませんでした。参照ではなく値で渡されます)。単純にそこから疑似 DOM を作成し、オプションを削除します。ただし、恒久的なことは何も起こりません。

影響を受けた結果を取得したい場合は、すべてをコンテナーに入れ、その HTML を読み戻す必要があります。

var txt = "<p>this is a HTML <span>string</span></p>";
txt = $('<div />').append(txt).find('span').remove().end().html();

txtspan削除されました。

于 2012-08-02T09:53:54.503 に答える
1

最初にjQueryセレクターを作成して、常に1つに再度キャストする必要がないようにします。

あなたの検索では、選択時にselect実行しているため、再度指定する必要もありません。.find()

簡単にするために、結果を.find()削除する前に別のセレクター変数にキャッシュしました。

以下は正常に動作します。まあ、あなたが何を指しているのか分からないので、1代わりに使用するとうまくいきます。$(this).attr("id")$(this)

var $txt = $("<select name='example'><option value='1'>Test</option></select>");
//var $option = $txt.find("option[value='" + $(this).attr("id") + "']");
var $option = $txt.find("option[value='" + 1 + "']"); // selects option with value of 1
$option.remove(); // Removes option

ワーキングデモ

于 2012-08-02T09:54:35.037 に答える
0

変数に格納されているHTMLを含む文字列から始めていtxtます。呼び出す$(txt)と、そのHTML文字列で定義された要素を含むjQueryオブジェクトが作成されます。これは、txt変数とは完全に別のものです。その後、要素を操作(この場合は削除を試みる)できますが、要素は完全に分離されtxtているため、変更は反映されません。

の値を別のものに変更したい場合はtxt、おそらくそのように、その値をそれに割り当てる必要があります(呼び出し.text()によって期待/見たいものが得られたと述べました):

txt = $(txt).find("select option[value='" + $(this).attr("id") + "']").remove().text();
于 2012-08-02T09:56:55.523 に答える
0

remove() メソッドは要素を削除します。したがって、要素は DOM に存在する必要があります。txt は DOM で表されない変数であるため、値は単なる string です。replace() のようなものを使用する必要があります。

var txt = "<select name='example'><option value='1'>Test</option></select>";
        txt=txt.replace("<select name='example'><option value='1'>Test</option></select>","replacedText");
于 2012-08-02T10:02:14.063 に答える
0

何もありませtxtString。変数にその DOM スニペットが必要だと思います。これは次のようになります。

var txt = "<select name='example'><option value='1'>Test</option></select>";
var $domSnippet=$(txt);
domSnippet.find("select option[value='" + $(this).attr("id") + "']").remove();
于 2012-08-02T09:51:51.757 に答える