2013-10-29 46 views
1

我選擇符合特定格式(edit-invoices-##_[a-zA-Z_-]),所有的div,然後抓住它們的ID在進一步的代碼使用失敗,這個作品,如果我做到以下幾點:的jQuery選擇通過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 

誰能告訴我爲什麼尾部連字符會破壞代碼?

+1

['的jQuery(「[屬性| =「值」]」)'](http://api.jquery.com/attribute-contains-prefix-selector/):選擇具有與一個值的指定屬性的元素或者等於給定的字符串或**起點與該字符串後跟一個連字符( - )**。 – Andreas

回答

2

嘗試^=

var fields = $("#invoicesTable div[id^='edit-invoices-']").map(function() { return this.id; }).get(); 

由於安德烈亞斯指出的那樣,|=實際搜索該字符串PLUS連字符等等當你添加尾隨連字符時,jQuery正在尋找編輯發票 - 我相信。

jQuery Reference

Demo

+0

剛剛添加了一個jsFiddle來演示它。 – melancia

+0

啊謝謝你,好addtion – Robb

+0

非常感謝這除了! – spyke01

0

爲什麼沒有尾隨連字符呈現的div沒有尾隨連字符 或試圖逃跑他們

2

這是因爲|=代表prefix selector

選擇具有與值要麼 等於給定的字符串或以該字符串開始,隨後指定的屬性的元素由 連字符( - )

所以,如果你使用這個選擇將在給定值的末尾添加-

例如: $("#invoicesTable div[id|='edit-invoices']"):將尋找ID edit-invoicesid開始edit-invoices-元素,以同樣的方式$("#invoicesTable div[id|='edit-invoices-']")將尋找ID edit-invoices-id元素開始edit-invoices--