<div id="searchPanel"> <form method="get" id="searchBox" action="somePage.PHP"> <input class="ghText" type="text" name="query" value="search here"/> </form> </div>
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");
一切都很好
我可以去睡觉,不用担心太多了,但是我很好奇为什么会发生这样的事情?
是因为“这个”不是引用正确的对象,还是因为我尝试将jQuery对象存储在非jQuery变量中,还是关于别的东西?有人可以指出我有什么问题吗?我一直认为“var x”与“$ x”相同..?
解决方法
>使用var声明的变量与没有变量的变量不同。 “var x”是一个局部变量,所以它不会与其他函数共享一个值,也有一个名为“x”的变量。这几乎总是一件好事,所以你几乎总是用“var”声明变量。
> $ in jQuery是一种特殊的。这不是特别的只是jQuery已经声明了一个名为“$”的变量,它会做一些奇特的操作。
>以“$”开头的变量没有什么特别的。换句话说,“$ x”只是一个变量名。它是一个与“x”不同的变量,它不是“jQuery变量”。它只是一个名为“$ x”的JavaScript变量。 (这不同于PHP,其中$实际上是一个特殊的变量语法。)
所以你可以把它称为“值”而不是“$ value”。
对于“这个”,是的,这是JavaScript的一个棘手的方面,可能会导致你的问题。内部“焦点”和“模糊”功能中的“this”的值可能与外部“this”的值不同。我不知道事件处理程序中的“this”是什么,但它不会是同一个对象。所以你可能想要做的是将“this”赋给外部函数中的变量,然后在内部引用该变量来代替“this”。
原文地址:https://www.jb51.cc/jquery/181813.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。