2013-07-17 6 views
0

Есть ли селектор jQuery, который получит содержимое атрибута элемента, но если атрибут пуст, он получит содержимое самого элемента? Например, у меня есть следующий HTML:jQuery empty "или" selector?

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

По сути, я хочу, чтобы это сделать что-то вроде «h2.alt | h2» (так, если нет «Alt» тега, выберите сам элемент).

В этом примере, я хочу, чтобы иметь возможность получить следующие в списке:

apple 
banana 

Причина этого заключается в том, что я буду использовать плагин JQuery TOC, что позволяет придать ему JQuery селекторы для которых элементы вытягивают ToC (например, «h1, h2, h3»). Я хочу иметь возможность указать в некоторых из моих элементов альтернативный атрибут, если я хочу, чтобы текст ToC отличался от текста содержимого/заголовка.

Любая помощь будет замечательной!

Спасибо!

EDIT:

Просто чтобы прояснить - она ​​должна была бы быть селектор, потому что это то, что я должен передать в плагин. (Например, «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

он не может быть селектором, потому что вы не используете его для фильтрации элементов, вы пытаетесь получить значение, используя это свойство –