2015-03-19 23 views
0

我試圖創建屬性名稱以字符串「toselect」結尾的元素屬性值數組。我在頁面上有很多這些元素,但我只想要單擊的元素的值。我不知道jquery .attr()函數是否帶有任何通配符。我正在使用jquery,但我也會很高興與一個純粹的javascript anwser在屬性名稱以特定字符串結尾的位置創建屬性值數組

我知道這不起作用,但我需要類似的東西。

var attrs[] = $(this).attr('*toselect');

的HTML看起來像這樣

<div class="someclass" data-firsttoselect="somevalue1" data-secondtoselect="somevalue2" data-thirdtoselect="somevalue3"></div> 

所以數組 'ATTRS' 應該包含{somevalue1, somevalue2, somevalue3}

+0

你應該可能使用'data- *'屬性,而不是你自己組成的無效屬性? – adeneo 2015-03-19 10:42:19

+0

僅供參考,該HTML無效。您不能將非標準屬性添加到元素。嘗試使用'data- *'屬性代替。 – 2015-03-19 10:42:30

+0

我會這樣做,但我仍然不知道如何選擇它們 – steven35 2015-03-19 10:43:07

回答

0

首先,是HTML是無效的。您不能將非標準屬性添加到元素,而不會使頁面無效,這可能會導致UI和JS問題。嘗試使用data-*屬性來代替:

<div class="someclass" data-firsttoselect="somevalue1" data-secondtoselect="somevalue2" data-thirdtoselect="somevalue3"></div> 

從那裏,你可以通過使用map()和對正則表達式的測試值,這樣創建*toselect值的數組:

var data = $('.someclass').data(); 
var values = $.map(data, function(value, key) { 
    if (/toselect$/i.test(key)) 
     return value; 
}); 

Example fiddle

+0

然而Angular完全依賴於非標準屬性? – Alnitak 2015-03-19 10:50:16

+0

@Annitak的確如此。大多數渲染器都是寬鬆的,並且會讓你離開它,但HTML仍然無效。這裏是關於這個問題的一個問題:http://stackoverflow.com/questions/18665303/how-does-angularjs-get-away-with-using-custom-html5-element-tags-and-attributes – 2015-03-19 10:52:41

+1

使用非標準屬性在數據屬性之前已經很常見了。瀏覽器不會廢話,只是忽略 – charlietfl 2015-03-19 10:58:49

相關問題