jQuery按ID选择失败,带有尾随连字符

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

我正在选择所有与特定格式匹配的div(
编辑发票-###[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来演示它。非常感谢您的添加!