1

JavaScript には、 と の 2 つの配列がtags[]ありtags_java[]ます。.splice2 つの配列で同じインデックスの特定のアイテムを削除するために使用します。tags[]正常に動作しますが、そうtags_javaではありません。常に最後のアイテムを削除しているようです。コードjsfiddle リンクは次のとおり
です。

var tag = $(this).text();
var index = $.inArray(tag, tags);
    tags.splice(index,1);
    tags_java.splice(index,1); 
4

2 に答える 2

1

タグの正しいインデックスを実際に見つけていないため、どちらも機能しません。

なぜだめですか?$(this).text()あなたが追加した削除マークが含まれているため、たとえば×「モーニング×」などです。それはtags配列にないため、 index-1 になります。tags.splice(-1, 1);配列の末尾から 1 項目を削除します。

一般に、プレゼンテーション テキスト (つまり、タグ要素のテキスト) をデータとして使用することは決して良い考えではありません (たとえば、そのテキストを配列内のルックアップ値として使用するなど)。ここのように、プレゼンテーションで何かが変更されると、壊れる可能性が非常に高くなります。そのため、データ (タグを検索するために必要なもの)データとして保存することをお勧めします (例: jQuery が提供data()する API を使用)。

簡単な例を次に示します - 「JT」で始まるコメントでマークした 2 行を追加/置換するだけです: JSFiddle

で検索する代わりに、 に$(this).text()格納されているデータ値「tagValue」$(this).data()で検索しています。このように、検索値は引き続き要素にバインドされていますが、表示テキストには依存していません。

于 2013-08-18T20:39:13.070 に答える
1

が配列にtagない場合、はを返します。これにより、最後の項目が削除されます。tags$.inArray-1

アイテムが実際に配列にあることを確認する必要があります

于 2013-08-18T20:36:31.683 に答える