0

誰かがこのjqueryセレクターが機能しない理由を説明できますか、私は問題を回避しましたが、私の正気のために私が間違っていることを知りたいです

複数のテキストエリアを持つフォームがあり、それぞれがf_id_DSC000001.JPGのようなIDを取得します。ここで、最後の部分は写真番号です。テキストエリアには、postを使用してコンテンツを送信し、データベーステーブルを更新するonblurイベントがあり、json応答が返されます。それはすべて正常に機能します。Firebugを使用して結果を確認できます。問題はありません。

IDのDSC000001.JPG部分が確認としてjson応答に返されます。次に、テキストエリアのクラスを変更して、更新の状態を表示します。

私がこれをするとき

var textarea_selector="#f_id_"+res_data.image_filename;
$(textarea_selector).removeClass("kw-class");
$(textarea_selector).addClass("update-failed");

クラスは変わりませんが、これを行うと

$("textarea[id*='"+res_data.image_filename+"']").removeClass("kw-class");
                  $("textarea[id*='"+res_data.image_filename+"']").addClass("update-done");

それはうまくいきます。

私はjavascript/jqueryの専門家ではありません:-(したがって、基本的な説明は私が本当に感謝するものです。

4

4 に答える 4

8

IDにドットがあります。そして、それはクラスセレクターとして解釈されます:

#f_id_DSC000001.JPG
\_____________/\__/
 id             class

しかし、これは機能するはずです:

var textarea_element = document.getElementById("f_id_"+res_data.image_filename);
$(textarea_element).removeClass("kw-class").addClass("update-failed");

またはこれ:

var textarea_id = "f_id_"+res_data.image_filename;
$("[id="+textarea_id+"]").removeClass("kw-class").addClass("update-failed");
于 2009-09-23T15:11:15.003 に答える
1

ID で奇妙な文字をエスケープすることに注意する必要があります。詳細については、jQuery FAQを参照してください。

于 2009-09-23T16:26:01.463 に答える
0

2つの異なるIDを呼び出しているようです。最初の例で「#f_id」を追加するのはなぜですか?要素のIDに「#」を追加して適切に選択できるはずです。

于 2009-09-23T15:11:22.633 に答える
0

試す:

var textarea = $("textarea[id*='"+res_data.image_filename+"']");
textarea.removeClass("kw-class");
textarea.addClass("update-failed");

投稿の例と同じようにセレクターを作成していないため、失敗しています。このソリューションでは、選択を1回だけ実行します。

于 2009-09-23T15:13:36.967 に答える