【问题标题】:Weird error with contains jquery包含 jquery 的奇怪错误
【发布时间】:2018-04-21 13:46:44
【问题描述】:

我有一个数组并且它的构建正确:

//Clients list
clientsList = [];

$('.client__name').each(function() {
    clientsList.push( $(this).html().toLowerCase() );
});

我正在尝试获取包含特定字符串的那些:

$( clientsList:contains('string') ).each(function() {
    console.log('result');
});

但我有这个错误:

Uncaught SyntaxError: missing ) after argument list

我不知道出了什么问题,知道吗?

【问题讨论】:

  • 我不知道这是不可能的(我有一段时间没有阅读 :contains() 文档),但您似乎正在尝试使用 contains-selector 选择 Array 元素,我不认为可以工作,据我所知,: 是对象构造之外的语法错误。

标签: jquery contains


【解决方案1】:

clientsList 是一个数组。您应该对数组使用$.each 方法。

$.each( clientsList, function( client ) {
    if (client.indexOf('string') > -1) console.log('result');
});

【讨论】:

  • 最好只在 CSS 选择器中进行过滤,然后在 CSS 选择器之上编写额外的代码过滤。
  • 这不是 dom 查找。他有一个数组,其中包含他想要过滤的结果。或者你的意思是在添加到数组之前先做那个过滤器?
【解决方案2】:

“contains”是一个选择器关键字,不是一个数组函数。 这是正确的方法:

$(".client__name:contains('string')").each(function() {
    clientsList.push( $(this).html().toLowerCase() );
});

【讨论】:

  • 如果他想匹配“字符串”不区分大小写怎么办?
【解决方案3】:
$(".client__name:contains('string')").each(function() {
    console.log('result');
});

【讨论】:

  • contains() 不匹配不区分大小写吗?如果您查看 OP,他会在第二部分尝试找到匹配项之前将值小写。 @ism
【解决方案4】:
$(clientsList).each(function(i) {
    console.log(clientsList[i].contains("string"))
})

【讨论】:

  • $.each() 应该与不包含 dom 元素的数组一起使用,而不是 $.fn.each() 这就是 $(...).each() 的含义
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 2014-02-04
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多