2012-10-08 48 views
2

說我有這樣的內容:查找與有名稱的特定屬性的所有元素開始與一些字符串

<h1 data-myapp-title>Title</h1> 
<p data-myapp-description>Description</p> 

我怎麼可能以與「數據myapp- *」屬性名進行篩選jQuery的?

+0

你的意思是像'$('[數據MYAPP標題],[數據myapp-描述]')'還是比指定固定屬性名稱更靈活? –

+0

我想如果可能的話使用正則表達式,所以最後可以是任何字符串,而不是某些集合。 –

+0

你是什麼意思使用正則表達式?作爲屬性選擇器? –

回答

3

不是防彈的,但這應該讓你關閉。我做了它的選擇,使之更容易一點,但是這是總的前提:

  • 返回有選擇
  • 允許您指定通配符或正則表達式匹配的屬性的任何元素。 (簡單的測試工作,但也許應該做更多的事情)

(function($){ 
    $.expr[':']['attr'] = function(obj,index,meta,stack){ 
     var re = new RegExp(meta[3]), m = false; 
     for (var a = 0; a < obj.attributes.length; a++){ 
      m |= re.test(obj.attributes[a].name); 
     } 
     return m; 
    }; 
})(jQuery); 

$(':attr(data-myapp-*)').css('color','#f0f'); 

jsFiddle

+0

我無法表達這一點 - 沒有經過徹底或嚴格的測試。如果它接近半生產,我會通過鈴聲運行。另外,我無法想象對每個元素的屬性進行迭代,並且應用測試的效率很高,所以我確定其他具有編輯能力的人可以添加價值0.02美元的優化。 –

+0

我打算將它用於服務器端的NodeJS預處理需求,因此對我來說性能並不那麼重要。感謝您的解決方案! –

相關問題