0

是否有一个 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”)。它不可能是实际代码。

谢谢!

4

2 回答 2

2

这是小提琴

$('h2').each(function (id, value) {
    var altAttr = $(this).attr('alt');
    if (altAttr === undefined) alert($(this).text());
    else alert(altAttr);
});
于 2013-07-17T05:18:49.637 回答
1

你可以

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

演示:小提琴

于 2013-07-17T05:22:20.550 回答