Ben*_*jia 28 javascript jquery
我有这个简单的鬼文本实现:
HTML代码:
<div id="searchPanel">
<form method="get" id="searchBox" action="somePage.php">
<input class="ghText" type="text" name="query" value="search here"/>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
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");
}
});
});
Run Code Online (Sandbox Code Playgroud)
上面的例子不起作用.当用户将光标聚焦在搜索栏上时,由于某种原因,类"ghText"将不会被删除.
但是现在,如果我将"var value"(变量初始化)和"value"更改为"$ value",如下所示:
$value = $($txtField).val();
$(this).val($value).removeClass("ghText");
$(this).val($value).addClass("ghText");
Run Code Online (Sandbox Code Playgroud)
一切都很完美.
我可以去睡觉而不是太担心它..但我很好奇为什么会发生这样的事情?
是因为"this"没有引用正确的对象,或者是因为我尝试将jQuery对象存储在非jQuery变量中,或者是关于其他东西......有人能指出我出了什么问题吗?我一直以为"var x"与"$ x"相同..?
mgi*_*uca 78
您似乎对JavaScript变量感到困惑.没有"jQuery变量"和"非jQuery变量"之类的东西.一些具体案例:
所以你可以称之为"价值"而不是"$ value".
可能你删除了"var"的事实通过将其变成全局变量而改变了事物.
至于"this",是的,这是JavaScript的一个棘手的方面,可能会导致你的问题.内部"焦点"和"模糊"功能中"this"的值可能与"this"外部的值不同.我不确定事件处理程序中"this"指的是什么,但它不会是同一个对象.所以你可能想做的是将"this"分配给外部函数中的变量,然后在内部引用该变量来代替"this".
小智 32
在变量中存储jQuery选择时,通常的做法是$
在变量名之前添加a ,如下所示:
var $banner = $('#banner');
Run Code Online (Sandbox Code Playgroud)
没有必要包括美元符号 - var banner = $(‘#banner’)
- 也可以.但是,美元符号会提醒您该变量包含jQuery选择,而不仅仅是数字或字符串之类的旧值.