2013-07-17 95 views
0

是否有一個jQuery選擇器可以獲取元素屬性的內容,但是如果該屬性爲空,它將獲取元素本身的內容?例如,假設我有以下的HTML:jQuery空「或」選擇器?

<h2 alt="apple">Hello, world</h1> 
<h2>banana</h2> 

從本質上講,我希望它做的東西,如「h2.alt | H2」(所以,如果沒有「ALT」標籤,選擇元素本身)。

在這個例子中,我希望能夠得到以下列表中:

apple 
banana 

這樣做的原因是,我將使用jQuery的ToC的插件,允許你給它jQuery選擇(例如「h1,h2,h3」)的元素。如果我希望ToC文本與內容/標題文本不同,我希望能夠在某些元素中指定替代屬性。

任何幫助將是偉大的!

謝謝!

編輯:

只是爲了澄清 - 因爲它必須是一個選擇,因爲它是我要傳遞到插件的東西。 (如「h2.alt,h3,h4.alt | h4」)。它不能是實際的代碼。

謝謝!

回答

2

這裏的FIDDLE

$('h2').each(function (id, value) { 
    var altAttr = $(this).attr('alt'); 
    if (altAttr === undefined) alert($(this).text()); 
    else alert(altAttr); 
}); 
+0

感謝您的答覆。我編輯了我的問題進行澄清。基本上需要一個選擇器,如果存在的話。 –

1

您可以

var results = $('h2').map(function(){ 
    var $this = $(this), alt = $this.attr('alt') 
    return alt == undefined ? $(this).text() : alt 
}).get(); 

演示:Fiddle

+0

嘿謝謝你的回覆。我編輯了我的問題進行澄清。基本上需要一個選擇器,如果存在的話。 –

+2

它不能是一個選擇器,因爲您沒有使用它來過濾元素,您正試圖使用​​此屬性獲取值 –