【问题标题】:Check if data attribute value equals a string检查数据属性值是否等于字符串
【发布时间】:2018-04-01 14:47:33
【问题描述】:

我有一个元素,它在名为<button class="navbar-toggle"> 的元素上具有我的自定义属性data-toggle-wmc,我正在尝试检查该属性值是否等于名为collapse 的字符串值,但到目前为止它还没有工作。

我尝试了以下

if ($('button.navbar-toggle').attr('data-toggle-wmc') === 'collapse') {
     alert('123yes');
} 

我也试过了

if ($('button.navbar-toggle').attr('data-toggle-wmc') == 'collapse') {
     alert('123yes');
}

我查看了this 问题,但不知何故,条件没有得到满足。

【问题讨论】:

  • 您缺少' - .attr('data-toggle-wmc')。另外,请改用data('toggle-wmc') == 'collpase'
  • 我不知道是不是拼写错误,但您在data-toggle-wmc) 之后缺少一个` `
  • 这只是这个问题的错字,而不是我的实际代码。
  • 选择器button.navbar-toggle是否只有一个元素?
  • 在这种情况下,您的代码可以正常工作:jsfiddle.net/f53o5dwL。这意味着您有多个 button.navbar-toggle 元素,该元素没有该属性 - 因此我上面建议使用 data() 因为它可能被添加到 jQuery 的缓存中,而不是 DOM,或者您的其他地方有错误代码,您需要检查控制台才能看到它。在上述任何一种情况下,我们都需要查看更多的 HTML 和 JS 代码,以便有效地帮助您。

标签: javascript jquery html css


【解决方案1】:

试试:

if ($('button.navbar-toggle').data('toggle-wmc') === 'collapse') ...

【讨论】:

  • 谢谢。不幸的是,它不起作用,但console.log($('button.navbar-toggle').data('toggle-wmc')) 确实打印出属性值。
  • 正如其他人指出的(通过示例)代码可以正常工作,因此您的代码中可能还有其他东西会干扰它。例如页面中另一个带有.navbar-toggle 类的按钮。如果您将 console.log 放在 if 之前会怎样?它是否仍然正确打印值?
  • 是的@LorenzoMarcon 是对的。这是一个 jsfiddle 演示它的工作原理:jsfiddle.net/dun6qvn0
  • 谢谢这个方法有效。我会将此标记为答案
【解决方案2】:

使用 $.data 访问数据属性。它似乎像这样工作

$("button.navbar-toggle").on("click", function(){
  if($(this).data("toggle-wmc") === "collapse"){
    console.log($(this).data("toggle-wmc"));
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="navbar-toggle" data-toggle-wmc="collapse"  width="100" height="50">button</button>

【讨论】:

    【解决方案3】:

    您的代码中存在参数错误。试试这个

    if ($('button.navbar-toggle').attr('data-toggle-wmc') == 'collapse') {
        alert('123yes');
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 2018-02-10
      • 2014-07-29
      • 2020-12-31
      • 2015-08-13
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多