我有一个文本输入框的窗体,当输入值被输入到输入框中时,它显示与其当前值相似的条目。显示结果,但由于某些原因,分配给它们的事件处理程序运行不正常:当我将鼠标悬停在它们上方时,输入框的值未设置为其值。jQuery鼠标悬停事件处理程序不工作或正在检测
谷歌浏览器的开发工具根本没有检测到事件处理程序被连接。 但是,当我尝试静态版本的.searchResult类并在其中放入一些文本时,事件处理程序确实正常工作。
问题似乎只发生在从数据库中提取的结果中。
这是Javascript代码。
$(document).ready(function() {
function search(searchQuery) {
$.post("requires/search.php", {searchBit: searchQuery}, function(data) {
$("#results").html(data);
});
}
$("#searchBar").focus(function() {
if ($("#searchBar").val() === "search...") {
$("#searchBar").val("");
}
$(this).addClass("searchBarFocus");
$(this).removeClass("searchBarBlur");
});
$("#searchBar").blur(function() {
$(this).addClass("searchBarBlur");
$(this).removeClass("searchBarFocus");
});
$("#searchBar").keypress(function() {
$("#results").fadeOut(100);
$("#results").fadeIn(100);
});
$("#searchBar").keyup(function() {
search($(this).val());
});
$(".searchResult").mouseover(function() {
$("#searchBar").val($(this).text());
});
});
这是将结果输出到#results div内部的地方。
<div id="search">
<form>
<input type="text" name="searchBit" value="search..." id="searchBar" class="searchBarBlur"
autocomplete="off"/>
</form>
<div id="results">
</div>
</div>
这是searchResult类的css,如果它有任何用处的话。
.searchResult {
cursor: pointer;
color: #444444;
border-top: .1em solid #EEEEEE;
height: 100%;
padding: .4%;
}
.searchResult:hover {
background-color: #77CC77;
}
有没有人有任何想法可能会导致这个问题?我必须在脚本的另一个位置附加事件处理程序吗?
感谢您为我的代码优化版本! – 2011-02-13 15:48:49
@Kevin我建议你使用delegate()而不是live()。它具有更好的性能......请参阅上面的我的代码。 – 2011-02-13 15:50:33