簡體   English   中英

Escaping 使用屬性等於選擇器時元素名稱中的方括號

[英]Escaping square brackets in element's name when using the Attribute Equals Selector

請考慮以下代碼:

$('[name='+temp[i][0]+']').prev().addClass('form_error');

其中 temp[i][0] 是一個數組項,其中包含包含方括號的表單字段的名稱(因為它表示復選框數組), name_of_field[]

為了讓它工作,我知道我應該轉義表單字段名稱中的方括號。 但是,由於我是正則表達式的新手,所以我似乎做對了。 誰能給我提供正確的代碼? 非常感謝。

只需引用值,然后轉義引號:

var name = temp[i][0];
name = name.split('"').join('\\"');                   // Escaped " is \\"
$('[name="'+name+'"]').prev().addClass('form_error');

這也說明了其他有效名稱但無效的選擇器字符,例如$

如果你真的想使用正則表達式,下面的內容就足夠了(故意使用單行代碼來表明短代碼並不總是可讀的):

$('[name="' + temp[i][0].replace(/"/g, '\\"') + '"]').prev().addClass('form_error');
//            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

我想我可能會澄清這一點,因為毫無疑問我會再次回到這個問題上。

上面的問題可能最好用上面的“正則表達式”替換來解決,但是,如果您只是想訪問一個靜態命名的元素,如下所示,那么這里是您的簡單指南:

<input type="text" name="mytextelement[]" />
<input type="text" name="mytextelement[]" />

<script>
//using vanilla javascript

document.querySelector('[name="mytextelement\[\]"]'); //gets the first element only

document.querySelectorAll('[name="mytextelement\[\]"]'); //gets an array of above elements

//using jQuery

$('[name="mytextelement\[\]"]'); //gets all elements

<script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM