У меня есть эта простая реализация призрачного текста:
Код HTML:
<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 = $($txtField).val();
$(this).val($value).removeClass("ghText");
$(this).val($value).addClass("ghText");
все работает отлично.
Я могу просто заснуть и не слишком беспокоюсь об этом... но мне очень любопытно, почему что-то подобное может случиться?
это из-за того, что "this" не ссылается на правый объект, или это потому, что я попытался сохранить объект jQuery в переменной, отличной от jQuery, или это о чем-то еще. Кто-нибудь может указать мне, что было не так? Я всегда думал, что "var x" совпадает с "$ x"..?