【问题标题】:Recieving two values from data attribute one being undefined从未定义的数据属性一接收两个值
【发布时间】:2014-12-03 16:06:54
【问题描述】:

我正在尝试通过将数据属性名称与 id 链接在一起来链接到 div,但似乎收到错误

<div class="pod-container grid_3" data-name="#george">
  <div class="pod">
    <img src="img/example1.png" alt="">
  </div>
</div>

<div id="george">Hello World</div>

我正在引用 jQuery 1.8.3 并使用以下代码来识别我单击的 div 上的数据属性

<script>
  $('.pod-container').click(function(){
    var identifyId = $(this).data('name');
    console.log(identifyId);
    //$(identifyId).show();
  });
</script>

但是当它登录到控制台时,我得到了。

#george                                    testdoc.html:123 
undefined                                  testdoc.html:123 

【问题讨论】:

  • 因为第二个 div 没有data-name 属性。
  • 我已将父 div 的类更改为“pod-container”并在 JavaScript 中反映了这一点,但仍然收到相同的错误 -

标签: javascript jquery html jquery-data


【解决方案1】:

你有 两个 类“pod”的元素。其中一个有data-name 属性,一个没有。每次点击都会触发两个元素上的事件处理程序。

【讨论】:

  • 我已将父 div 的类更改为“pod-container”并在 JavaScript 中反映了这一点,但仍然收到相同的错误
  • @navigator 这是因为它是具有data-name 属性的父元素,而不是子元素。
【解决方案2】:

只需抓住具有data-name 的元素。您目前正在做的只是针对.pods,它可能有也可能没有data-name。使用下面的代码,您只是具体。

$('.pod[data-name]').click(function(){
   var identifyId = $(this).data('name');
   console.log(identifyId);
   //$(identifyId).show();
});

【讨论】:

  • 谢谢这个作品,我想了解如何,不要使用 $(this) 指定我点击的元素吗?
【解决方案3】:

您有 2 个带有 pod 类的元素,并且正在触发 2 个事件。内部 div 没有 data-name 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多