jQuery隐藏,如果按钮数据属性等于

问题描述 投票:0回答:1

我有以下jQuery代码来检查data-target属性是否具有此值。

if ($('.btn').data("target") === "#accordion-description"){
    alert('yes');
    $(this).hide();
}

警报将触发,但是“ this”不会隐藏。

这里是HTML:

<button class="btn collapsed" type="button" data-toggle="collapse" data-target="#accordion-description" aria-expanded="false">Description</button>

如何使用“ this”隐藏按钮?

更新:通过以下方式找到了解决方案:$('。btn [data-target =“#accordion-description”]')。hide();

jquery this
1个回答
0
投票

在该代码的上下文中,this并未特别标识任何内容。 (如果有的话,它是window对象。您可能无法隐藏也不想将其隐藏。)

如果.btn可以标识多个元素,则可能要遍历它们。 jQuery的.each()可以简化工作,在其回调中,您可以获得this引用元素的好处。例如:

$('.btn').each(function () {
    if ($(this).data("target") === "#accordion-description") {
        alert('yes');
        $(this).hide();
    }
});

(由于[C​​0]被调用两次,您甚至可能希望将其存储在变量中并仅引用该变量。对性能的细微改进,取决于您的可读性。]

或者,如果您just想隐藏元素,而整个“警报”只是用于测试,则无需像这样使它过于复杂。您可以只在选择器中标识目标元素并将其隐藏:

$(this)
© www.soinside.com 2019 - 2024. All rights reserved.