在JQuery中使用变量的正确方法是什么?

时间:2010-05-06 19:51:18

标签: jquery

我想引用一次元素,然后重用它抛出我的代码,但我不确定正确的方法。以下是我尝试的但它只适用于某些地方。 (编辑:工作,在我的代码中有一个错误,但我仍然很好奇这是否是最好的做法。)

$(document).ready(function() {
  var image = $("#content img");
  image.wrap("<span />");
  image.hover(function(){}, function(){});
});

5 个答案:

答案 0 :(得分:0)

那应该有用。你得到image.hover()无效的指示是什么?

作为旁注:这肯定不是一个标准,但是当我做这样的事情时,我用$表示jQuery对象的变量,所以:var $image = $("#content img"); - 只是帮助我跟踪什么是jQuery对象。

答案 1 :(得分:0)

hover()应该可以正常工作。在传递给hover()的函数内部,您使用$(this)来获取正在悬停的元素。所以:

$(document).ready(function() {
    var image = $("#content img");
    image.wrap("<span />");
    image.hover(function(){
        $(this).css({border:'5px solid red'});
    }, function(){
        $(this).css({border:'none'});
    });
});

这适合我。

答案 2 :(得分:0)

上面写的方式,var image是一个局部变量,其范围被称为onReady的匿名函数。因此,在函数范围之外对该变量的任何调用都将产生ReferenceError。在Javascript中,使用var为变量实例化添加前缀将其标记为局部变量,而将其关闭则会生成全局变量(通常是不明智的)。考虑以下(人为的)示例:

(function() {
  global_variable    = "global";
  var local_variable = "local";

  console.debug(global_variable);
  console.debug(local_variable);
})();

console.debug(global_variable);
console.debug(local_variable);

// Produces:

global
local
global
ReferenceError: local_variable is not defined

答案 3 :(得分:0)

我不确定我是否跟着你,贾里德。如果你看看下面的JS Bin,我(我认为)重复了你的例子,它运行正常。

http://jsbin.com/izimi3/

也许问题是语法或范围导向?

另外,如果这是字面上的代码(很明显没有细节),那么我建议不要使用变量来存储它。通常你会想要在你经常重复使用选择器时使用变量(例如“$ this = $(this)”),否则保持代码足够简单以便使用你当前需要的选择器可能会使对你来说更容易。

无论如何,我希望我读得对,并不只是浪费你的时间。

答案 4 :(得分:0)

你的代码看起来很好......在回调中创建一个局部变量,就像你一样,总是比使用全局对象更好。但是,jQuery的优点在于您可以缩短代码甚至根本不使用变量:

$(document).ready(function() {
  $("#content img").wrap("<span />").hover(function(){}, function(){});
});

这称为chaining,允许您在一个表达式中将jQuery对象的方法“链接”在一起。但如果你因任何原因确实需要变量,我认为它没有错。

相关问题