jQuery animate不起作用而其他一切都有效

时间:2015-06-01 13:15:17

标签: jquery jquery-animate try-catch

有没有人可以给我一些线索,我可以做些什么来调试jQuery一般和/或特别是这个问题?

问题:

jQuery 方法animate()表现得很奇怪。 该方法已添加到生成的onclick javascript HTML element方法中。

这:

try{

    $(element).animate({
        width : '300px'
    });

}catch(e){
    console.log(e);
}

不返回任何错误,但动画效果不起作用。 但是,这有效:

try{

    $(element).animate({
        width : '300px'
    });
    $(element).css('background','pink');

}catch(e){
    console.log(e);
}

背景:

var onclick = function(){

    var element = this;

    $(element).css('background','pink');

    try{

    $(element).animate({
        width : '300px'
    });

    }catch(e){
        console.log(e);
    }
}

var elem = document.create('div');
element.addEventListener('click',onclick,false);

事实上,事情有点复杂,但我简化了澄清问题。

我知道 jQuery 正在运行,因为$(element).css('background','pink')已正确执行。

所有内容都被正确地注入到主题背景中:

enter image description here

您可以注意到,我已添加jQuery-UI 以防万一...

我应该提一下,几天前,当我第一次注意到这个问题时,我并没有注射这样的东西。我在我的模板中eval内容jquery-1.11.2.min.class.js {这不是正确的方法,我同意,但这是一个草稿)我并没有使用 jQuery-UI 。在这个时候,try/catch发现了这个错误:

jquery Uncaught TypeError: (ec[b] || []).concat is not a function

我也已经能够使用$(element).css('background','pink');

我还应该提一下,我在代码中经常使用纯粹的 Javascript ,很少使用 jQuery ,但是从现在开始我需要的每个$函数都是工作正常。

我尝试了什么:

我在 SO 上发现了一些类似的问题,但没有适合我的问题的解决方案。例如,添加$(document).ready对我没有帮助。

var onclick = function(){

    var element = this;

$(document).ready(function () { 
    $(element).css('background','pink');

    try{

    $(element).animate({
        width : '300px'
    });

    }catch(e){
        console.log(e);
    }
}); 
}

我在 Google 中找不到相关内容,似乎这不是一个公共问题。不过,我对 jQuery 有了一些了解,即concat用于join two arrays

但是,即使我有no more error catched,我也被困住了,遇到的困难仍然存在。

1 个答案:

答案 0 :(得分:2)

我终于确定了出了什么问题,至少是表面上的。

我的问题来自于我向Object添加了2个原型。 而jQuery,可能在内部有点混乱,根本不喜欢它。 因此,删除添加到Object的每个自定义原型就足以让jQuery再次运行。

道德:如果您计划使用jQuery,请不要在Object上使用自定义方法。