IE中奇怪的jQuery错误:对方法或属性访问的意外调用


Strange jQuery error in IE: Unexpected call to method or property access

像往常一样,在Firefox, Chrome, Safari和Opera中一切都可以正常工作。但是IE…这是另一个故事了:)

下面是我的完整代码:http://pastebin.com/ZdzzFayJ

IE中至少有一件事是好的,请告诉我以下错误:

SCRIPT65535: Unexpected call to method or property access. 
jquery.min.js, line 3 character 29586

怎么了?我找不到bug:(


我清理了我的代码,javascript函数现在被称为jQuery插件。我仍然得到一个错误,但现在我知道在哪里。

在我的代码中,我在IE警告错误消息的代码旁边放了一个注释IE ERROR

插件:http://pastebin.com/6Dnd1qtd

jQuery: http://pastebin.com/wiHALjZx

我不知道为什么IE在那里坏了。有解决方案吗?


问候,马里奥

我的问题是:

我使用一个库,它适用于所有环境。

my_lib.js

jQuery.ajax({
        data : jQuery('form').serialize(),
        url : '/'+action[1]+'/post_form',
        type : 'POST',
        dataType: 'json',
        success: function(data){
            $('#my_name_id').find('option').remove().end().append(data.select_options);
});
Json返回:

select_options  "<option></option>"

一切都好!但是,在一种形式中,#my_name_id不是一个选择,而是一个隐藏字段,它是一个预先选择的值和用户的禁用属性。

这就是为什么jquery在IE8检索我的错误。

解决方案是:

my_lib.js

jQuery.ajax({
        data : jQuery('form').serialize(),
        url : '/'+action[1]+'/post_form',
        type : 'POST',
        dataType: 'json',
        success: function(data){
          if( $('#my_name_id').is('select') ) {
             $('#my_name_id').find('option').remove().end().append(data.select_options);
          }
});

希望它能帮助到别人!

您在echo_data(data)之后的get_data函数中似乎缺少分号。

request.done(function(data) {
    if (data) echo_data(data) _loading.hide();
    _ads_listing.unmask();
});

我用下面的方法解决了这个问题:

  • 清理我的代码(JSHint非常有用!)
  • 之前,我包括"//html5shiv.googlecode.com/svn/trunk/html5.js" IE认识到,我正在使用HTML5标签,如节,头,…
  • 在jQuery插件中,我用html内容填充元素。我用defaultOpts.data_container.html("HTML CONTENT")代替$(defaultOpts.data_container).html("HTML CONTENT")。所以我发送对象元素$(#ID)参数到插件,而不是仅仅发送元素ID "#ID"

现在,一切正常。感谢大家的支持和努力。