【问题标题】:jQuery internet explorer to get "Object doesn't support this property or method"jQuery Internet Explorer 获取“对象不支持此属性或方法”
【发布时间】:2013-03-06 08:48:37
【问题描述】:

运行以下代码时,Internet Explorer 8 给出错误“对象不支持此属性或方法”:

jQuery(function($) {
  $("input[name='first_name'], input[name='last_name']").not(".input-skippable").change(function() {
    if(!$(this).is(".input-skippable")) {
      if($(this).val().trim().length > 0) {
        $(this).removeClass("error");
      } else {
        $(this).addClass("error");
      }
    }
  });
  $("input[name='first_name']").change();
});

出错的那一行是“if($(this).val().trim().length > 0) {”。

似乎它与 val() 然后 trim() 有关。

【问题讨论】:

    标签: jquery internet-explorer-8


    【解决方案1】:

    一个问题是.val() 返回一个字符串,破坏了 jQuery 链,这意味着您不能再应用任何 jQuery 方法 (.trim())。另一个问题是 trim 是 jQuery 对象本身的方法,其中要修剪的值必须作为参数传递($.trim(value)),而不是链接到 jQuery 函数调用的方法(@987654327 @)。获取值的修剪长度的正确代码如下:

    $.trim($(this).val()).length
    

    编辑: 这个答案假设 ECMAscript 5 的 String.prototype.trim() 字符串方法不可用——它允许 OP 的代码在 IE9 和大多数现代浏览器中工作——但在 IE8 及更低版本中不可用。相反,它依赖于jQuery.trim()

    【讨论】:

    • 这不是真的,Vanilla JavaScript 也有trim 方法,OP 用的是String 对象的trim 方法。
    • @undefined 我刚才写的一切都是真的,解决方案解决了 OP 的问题。从 ECMAscript 版本 5 开始,Vanilla JavaScript 也确实为 String 提供了 trim 方法,但 IE
    • 我把它作为公认的答案,因为它是最完整的答案,尽管@undefined 的答案更快。
    • 您提供的解决方案当然有效,我的意思是这部分 意味着您不能再应用任何 jQuery 方法 (.trim())。另一个问题是 trim 是 jQuery 对象本身的一个方法..。这不是真的。
    • 我确实使用了 .trim() 函数,因为我认为它是在 jQuery 中使用的。我知道 Internet Explorer 本身不支持 trim()。
    【解决方案2】:

    IE8及以下不支持trim方法,可以使用jQuery的$.trim实用函数。

    if( $.trim( this.value ).length > 0 ) {
    

    【讨论】:

      【解决方案3】:

      这是错误的 if($(this).val().trim().length > 0) {

      改成

      if($.trim($(this).val())!="") {

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        • 2013-03-23
        • 2011-02-02
        相关资源
        最近更新 更多