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

时间:2011-11-24 22:30:42

标签: php javascript jquery internet-explorer

就像所有人一样,在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

有什么问题?我找不到一个错误:(


更新

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

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

PLUGINS:http://pastebin.com/6Dnd1qtd

jQuery:http://pastebin.com/wiHALjZx

我不知道为什么IE会在那里打破..任何解决方案?


问候,马里奥

3 个答案:

答案 0 :(得分:3)

对我来说,问题如下:

我使用的是一个适用于所有环境的库。

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不是选择,是隐藏字段,它是用户的预选值和禁用属性。

这就是IE8上的jquery检索到错误的原因。

解决方案是:

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);
          }
});

希望它有所帮助!

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

我通过以下方式解决了问题:

  • 清理我的代码(JSHint非常有帮助!)
  • 在我将"//html5shiv.googlecode.com/svn/trunk/html5.js"包含在IE之前,我认识到我正在使用HTML5标记,例如section,header,...
  • 在jQuery插件中,我用html内容填充元素。我没有使用$(defaultOpts.data_container).html("HTML CONTENT"),而是使用defaultOpts.data_container.html("HTML CONTENT")。因此,我将参数中的对象元素$(#ID)发送到插件,而不是仅发送元素ID "#ID"

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