【问题标题】:jQuery filter by data propertyjQuery按数据属性过滤
【发布时间】:2017-12-19 12:42:22
【问题描述】:

我有以下 sn-p,它必须在某些条件下返回对象,但我收到了这个错误:Uncaught TypeError: Cannot read property 'obj1' of undefined。但是,我使用控制台在 li 对象中看到了这个数据属性。

for(var i = 0; i < 15; i++){

  li = $('<li>List</li>');
  $(li).data('test', {obj1: (i < 10 ? 'some' : 'any')});
  $(li).appendTo('#list');
}

var f = $('#list li').filter(() => {
  return $(this).data('test').obj1 == 'any'
});

console.log($(f));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id ="list">

</ul>

【问题讨论】:

    标签: jquery filter jquery-data jquery-filter


    【解决方案1】:

    基本的经验法则是在处理 UI 相关的东西时不要使用箭头功能。就像,作为事件处理程序等。因为箭头函数会将其执行上下文绑定到自身。而且它不能被任何方式覆盖。

    var f = $('#list li').filter(function() {
      return $(this).data('test').obj1 == 'any'
    });
    

    使用普通匿名函数而不是箭头函数。如果您仍想使用箭头函数,那么 this 将指向它的执行上下文。它将指向 SO 执行程序中的window 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      相关资源
      最近更新 更多