混淆了简单变量声明,jQuery的"$variable"与javascript的"var"之间的区别。

10 浏览
0 Comments

混淆了简单变量声明,jQuery的"$variable"与javascript的"var"之间的区别。

我有一个简单的幽灵文本实现:

HTML代码:

     

jQuery代码:

$(document).ready(function(){
        $txtField = "#searchPanel form input.ghText";
        var value = $($txtField).val();
        $($txtField).focus(function(){
            if($(this).val() == value)
                $(this).val("").removeClass("ghText");
        });
        $($txtField).blur(function(){
            if($(this).val()==""){
                $(this).val(value).addClass("ghText");
            }
        });
});

上面的示例不会工作。当用户将光标聚焦在搜索栏上时,由于某种原因,类"ghText"不会被移除。

然而,如果我将"var value"(变量初始化)和"value"改为"$value",如下所示:

$value = $($txtField).val(); 
$(this).val($value).removeClass("ghText");
$(this).val($value).addClass("ghText");

一切都完美地运行。

我可以放心地睡觉,不用太担心它...但我非常好奇为什么会发生这种情况?

是因为"this"没有引用正确的对象,还是因为我试图将jQuery对象存储在非jQuery变量中,或者是其他原因...有人能指出我错在哪里吗?我一直以为"var x"和"$x"是一样的...

0