2009-08-10 181 views
0

有沒有一種方法重構是這樣的:我可以選擇具有一組屬性值的元素嗎?

$("input[name='InputName1'],input[name='InputName2']").val(""); 

弄成這個樣子:

$("input[name='InputName1|InputName2']").val(""); 

從本質上講,是有可能根據不重複的部分一組屬性值的選擇元素的選擇?

回答

1

你擁有的第一個版本是關於儘可能短,因爲它得到,忽略了特殊情況:

$("input[name^=InputName]") 

我說的特殊情況,因爲如果你想隨心所欲的名字它不是像他們將有一個方便始終加前綴(我會假設)。

通常我會盡量避免屬性選擇器。如果我不得不求助於他們,我通常覺得我失敗了。嘗試使用標記類,其中可能因此而不是:你給他們兩個一類的「復位」,並做

$("input[name='InputName1'],input[name='InputName2']").val(""); 

$("input.reset").val(""); 
4

也許你可以給輸入一個類?然後你可以使用$('input.clearMe')。

1

可以使用starts with選擇

$("input[name^=InputName]") 

我的最佳選擇是將然而,因爲它執行好類。

+1

應^ =根據文檔 – Zed 2009-08-10 11:08:03

+0

是是錯字!:) – redsquare 2009-08-10 11:11:00

0

你總是可以編寫一個custom selector,如果沒有一個默認:)

事實上,你可以使用例如從幾乎直接鏈接的網頁...

0

可以使用attribute contains選擇$('input[name*=InputName]')在一個屬性值匹配的子串。雖然,也許一個常見的rel-attribute或classname會是更好的選擇。但我認爲這是主觀的。

1

除了爲輸入提供一個類(就像這個問題的另一個答案中所建議的),輸入是否可能在DOM中有一個固有的邏輯分組? (例如,全部在表格內的單元格內,或全部在特定格內)。

不是給他們一個類,你可以通過他們的邏輯DOM分組來選擇它們,並且如果可能的話,在這個方法的某處添加一個ID來加速選擇器的性能。

如果可能的話儘量避免選擇類(雖然其他地方例如減輕他們的表現由連詞與輸入元素找他們打)

相關問題