将对象传递给jQuery .each()(而不是函数)会导致错误

时间:2014-03-28 23:00:57

标签: javascript jquery html css

这是我的JavaScript代码,它给了我一些奇怪的错误:

    $(".jchart div").each({
      $(this).css({
        'height': jBarHeight
      });
    });

此代码在Uncaught SyntaxError: Unexpected token (

上给出了错误:$(this).css({

我也试过这个:

    $(".jchart").find("div").each({
      $(this).css({
        'height': jBarHeight
      });
    });

但它给了我同样的错误,可能是什么问题!?

另请注意: jBarHeight是我未发布的代码中其他位置的已定义变量,我删除了大量代码以减少问题大小。

3 个答案:

答案 0 :(得分:10)

你的语法错了。 .each()采用回调函数,而不是对象。

试试这个:

$(".jchart").find("div").each(function() {
    $(this).css({
        'height': jBarHeight
    });
});

答案 1 :(得分:1)

我认为您已经向它解释了为什么您的.each()调用无效(它需要回调函数作为参数)。

但是,事实证明,这里根本不需要.each()。你可以这样做:

$(".jchart div").height(jBarHeight);

并且,jQuery将迭代集合中的所有元素并在其上调用.height()。如果您想使用.css(),则可以执行此操作:

$(".jchart div").css("height", jBarHeight);

$(".jchart div").css({height: jBarHeight});

所有这些都比进行自己的.each()迭代更简单,并利用大多数jQuery方法对jQuery集合应用一些更改将自动迭代整个集合。

答案 2 :(得分:0)

我怀疑你想要第一行阅读:

$(".jchart div").each(function(){

如果没有function(),您宣布的是对象字面值,而不是函数,因此(中的$(this)是非法的。