【问题标题】:jQuery empty "or" selector?jQuery空“或”选择器?
【发布时间】:2013-07-15 12:35:21
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: jquery selector tableofcontents


    【解决方案1】:

    这是FIDDLE

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

    【讨论】:

    • 感谢您的回复。我编辑了我的问题以进行澄清。基本上需要一个选择器,如果存在的话。
    【解决方案2】:

    你可以

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

    演示:Fiddle

    【讨论】:

    • 您好,感谢您的回复。我编辑了我的问题以进行澄清。基本上需要一个选择器,如果存在的话。
    • 它不能是一个选择器,因为你没有使用它来过滤元素,你正在尝试使用这个属性来获取值
    猜你喜欢
    • 2010-11-16
    • 1970-01-01
    • 2011-01-24
    • 2015-10-01
    • 2016-07-16
    • 2015-07-19
    • 2012-03-19
    • 1970-01-01
    • 2017-07-06
    相关资源
    最近更新 更多