减少jquery选择器的重复使用

时间:2014-01-25 23:48:08

标签: jquery

我正在学习jquery,我发现我一直在写这样的东西:

if ($("#Menu").zIndex()<200) {
    $("#Menu").zIndex(250)
    return;
}
else
{
    $("#Menu").zIndex(100)
    return;
}

我认为必须有一种方法可以不必重复$(“#Menu”) - 类型选择器这么多。我看到我可以将$(“#Menu”)分配给变量,然后使用它,但吹掉了漂亮的“.zIndex”方法。或者我可以用功能做点什么。

针对此类情况的最佳做法是什么?

2 个答案:

答案 0 :(得分:5)

您将使用jQuery元素或DOM中的某些内容的一个很好的指标是使用$为变量添加前缀。这样,您就知道自己正在操纵一些HTML元素,而不是只需var运行所需的标准javascript

因此,您可以使用任何您想要的var名称。我刚刚决定使用$m来表示写入比$menu$("#menu")

更容易

修改:变量中caching的另一个好处是jQuery每次调用时都不必清除整个document感谢callout @AdamMerrifield

所以,这样的事情就是典型的做法。

var $m = $('#menu');

if($m.zIndex() < 200) {
    $m.zIndex(250);
    return;
} else {
    $m.zIndex(100);
    return;
}

此外,您甚至可以使用ternary operator更多地缩短代码。

Learn More With Interactive Lesson

复制自@ Hardy的回复:

var $m = $('#menu');
var new_z = $m.zIndex() < 200 ? 250 : 100; 
$m.zIndex(new_z);

答案 1 :(得分:1)

可读性是一种很好的做法。您还可以执行内联语句,如:

// Read this like "if zIndex is smaller than 200 new_z 
// value comes to 250 else 100"
var new_z = $("#Menu").zIndex() < 200 ? 250 : 100; 

$("#Menu").zIndex(new_z);

编辑:避免多次使用字符串类型引用元素。查看@Nicholas Hazel回答。