jQuery按ID选择失败,带有尾随连字符
我正在选择所有与特定格式匹配的div(jQuery按ID选择失败,带有尾随连字符,jquery,Jquery,我正在选择所有与特定格式匹配的div(编辑发票-###[a-zA-Z#-]),然后获取它们的ID以用于进一步的代码中,如果我执行以下操作,这将起作用: var fields = $("#invoicesTable div[id|='edit-invoices']").map(function() { return this.id; }).get(); 但是,如果在发票后面添加连字符,则会失败(不返回结果),如下所示: var fields = $("#invoicesTable d
编辑发票-###[a-zA-Z#-]
),然后获取它们的ID以用于进一步的代码中,如果我执行以下操作,这将起作用:
var fields = $("#invoicesTable div[id|='edit-invoices']").map(function() {
return this.id;
}).get();
但是,如果在发票后面添加连字符,则会失败(不返回结果),如下所示:
var fields = $("#invoicesTable div[id|='edit-invoices-']").map(function() {
return this.id;
}).get();
这一点很重要的原因是,如果我有以下div,则需要对它们进行不同的处理,因此我必须分别选择它们:
edit-invoices-39_id
edit-invoices_products-39_id
有人能告诉我为什么尾随连字符会破坏代码吗?为什么不使用尾随连字符渲染div而不使用尾随连字符
或者尝试转义它们为什么不使用尾随连字符渲染div而不使用尾随连字符 或者尝试逃避它们尝试
^=
var fields = $("#invoicesTable div[id^='edit-invoices-']").map(function() { return this.id; }).get();
正如Andreas指出的,|=
实际上是在搜索该字符串加上连字符,所以当您添加尾随连字符时,jQuery是在寻找编辑发票--,我相信
试试^=
var fields = $("#invoicesTable div[id^='edit-invoices-']").map(function() { return this.id; }).get();
正如Andreas指出的,|=
实际上是在搜索该字符串加上连字符,所以当您添加尾随连字符时,jQuery是在寻找编辑发票--,我相信
这是因为
|=
代表
选择具有指定属性且具有以下值的元素:
等于给定字符串或以该字符串开头,后跟
连字符(-)
因此,如果使用此选择器,它将在给定值的末尾添加-
例:
$(“#invoicesTable div[id |='edit-invoices']”)
:将查找id编辑发票
或id
以编辑发票-
开头的元素,方法与$(“#invoicesTable div[id |='edit-invoices-”)相同
将查找id为编辑发票-
或id
以编辑发票--
开头的元素,因为=
代表
选择具有指定属性且具有以下值的元素:
等于给定字符串或以该字符串开头,后跟
连字符(-)
因此,如果使用此选择器,它将在给定值的末尾添加-
例:
$(“#invoicesTable div[id |='edit-invoices']”)
:将查找id编辑发票
或id
以编辑发票-
开头的元素,方法与$(“#invoicesTable div[id |='edit-invoices-”)相同
将查找id为编辑发票-
或id
以编辑发票--
开头的元素:选择具有指定属性的元素,该属性的值等于给定字符串或以该字符串开头,后跟连字符(-):选择具有指定属性的元素,其值等于给定字符串或以该字符串开头,后跟连字符(-)。仅添加了一个JSFIDLE来演示。非常感谢您的添加!刚刚添加了一个JSFIDLE来演示它。非常感谢您的添加!