jQuery空“或”选择器?

时间:2013-07-17 05:14:22

标签: jquery selector tableofcontents

是否有一个jQuery选择器可以获取元素属性的内容,但如果该属性为空,它将获取元素本身的内容?例如,假设我有以下HTML:

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

基本上,我希望它能做类似“h2.alt | h2”的事情(所以,如果没有“alt”标签,请选择元素本身)。

在此示例中,我希望能够在列表中获得以下内容:

apple
banana

这样做的原因是我将使用一个jQuery ToC插件,它允许你为jQuery选择器提供从中拉出ToC的元素(例如“h1,h2,h3”)。如果我希望ToC文本与内容/标题文本不同,我希望能够在我的一些元素中指定备用属性。

任何帮助都会很棒!

谢谢!

编辑:

只是为了澄清 - 它必须是选择器,因为它是我必须传递给插件的东西。 (例如“h2.alt,h3,h4.alt | h4”)。它不能是实际的代码。

谢谢!

2 个答案:

答案 0 :(得分:2)

这是 FIDDLE

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

答案 1 :(得分:1)

你可以

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

演示:Fiddle