【问题标题】:jQuery contains doesn't work on ChromejQuery 包含在 Chrome 上不起作用
【发布时间】:2015-07-23 07:37:09
【问题描述】:

我对 jquery contains 有一个问题。它在 Firefox 上完美运行。

这是我的代码。

$("input[data-height='cm']").blur(function(){
    var text = $(this).val();

    if($(this).val().length > 0) {
        if(!$(this).val().contains("cm")) {
            $(this).val(text + " cm");
        }
    }
});

在 chrome 上会报错

未捕获的类型错误:$(...).val(...).contains 不是函数

我该如何解决它,请帮忙。

谢谢。

【问题讨论】:

  • 那个函数不能那样工作。您可能想使用indexOfmatchtest 之类的东西。
  • 您正在尝试在JavaScript string 上使用jQuery contains 方法。
  • contains 方法是 jquery 插件的或者你可以在 jquery 中使用 dom 元素选择器调用,你不能在字符串上调用它。为此,您必须使用 indexOf。
  • 如果你全部使用$(this).val(),为什么还要缓存text?你应该替换它们(除了你设置的那个)
  • 好的,我明白了,但它在 Firefox 上是如何工作的?

标签: javascript jquery google-chrome contains


【解决方案1】:

使用indexOf 而不是contains

 if($(this).val().indexOf("cm") == -1) {
    $(this).val(text + " cm");
 }

【讨论】:

  • 谢谢你为我节省了很多时间
【解决方案2】:

.contains() 检查一个 DOM 元素是否是另一个 DOM 元素的后代,因此您应该将它与 jquery 对象一起使用:

这里可以使用indexOf()函数查看value属性的内容。

if($(this).val().indexOf("cm")>=0) {

}

您可以参考.contains()了解更多信息。

【讨论】:

    【解决方案3】:

    你可以使用test:

    if(!/cm/.test($(this).val())) {
        $(this).val(text + " cm");
    }
    

    【讨论】:

      【解决方案4】:

      Chrome 中没有contains 这样的方法。相反,你最好使用indexOf

      // Instead of...
      if ($(this).val().contains('cm')) { /* val() contains 'cm' */ }
      // ...do this:
      if ($(this).val().indexOf != -1) { /* val() contains 'cm' */ }
      

      请注意,indexOf 如果在字符串中未找到出现,则返回 -1,如果找到,则返回 >= 0。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多