这是一个从数组中找到结果的简短脚本(ar_menu_ref)。结果是一个简单的URL链接。但我需要双击才能打开链接。
输入> liveSearchValue(用户输入值) div> liveSearchResultList(liveSearchMenu()生成的结果)
首次点击生成的链接再次运行“liveSearchMenu()”。但为什么?此html标签上没有“onclick”,注册事件或其他任何内容(使用IE11进行测试和验证)。
<html>
<head>
<script src="jquery-1.4.2.js"></script>
<script>
var ar_menu_ref = new Array( new Array("home", "http://google.de"), new Array("home zwei", "http://google.de"), new Array("home drei", "http://google.de"), new Array("home vier", "http://google.de"), new Array("home fuenf", "http://google.de"), new Array("home sechs", "http://google.de"), new Array("home sieben", "http://google.de"), new Array("home acht", "http://google.de"), new Array("home neun", "http://google.de"), new Array("home zehn", "http://google.de"), new Array("home elf", "http://google.de"), new Array("home zwoelf", "http://google.de"));
var ar_findings = new Array();
var string;
var index;
function liveSearchMenu(){
string = $("#liveSearchValue").val();
ar_findings = new Array();
for(var i=0; i<ar_menu_ref.length && ar_findings.length < 10 ; i++){
index = ar_menu_ref[i][0].indexOf(string);
if(index >= 0){
ar_findings.push(i);
}
}
$("#liveSearchResultList").html("");
for(var j=0; j<ar_findings.length; j++){
$("#liveSearchResultList").append("<a href='"+ ar_menu_ref[ar_findings[j]][1] +"'>" + ar_menu_ref[ar_findings[j]][0] + "</a><br/>");
}
console.debug(string);
return true;
}
$(document).ready(function(){
$('input').bind('change keyup',function (){
liveSearchMenu();
});
});
</script>
</head>
<body>
<input id="liveSearchValue" type="text" value="">
<div id="liveSearchResultList">
</div>
</body>
</html>
˚F
答案 0 :(得分:0)
首次点击生成的链接再次运行“liveSearchMenu()”。但为什么呢?
$('input').bind('change keyup',function (){
liveSearchMenu();
});
这是收听input
的代码。它会侦听任何输入框中的更改,但它也会在任何输入框中侦听任何键(keyup)的释放。
也许你误解了change
的作用。当元素的值发生变化时,它不会触发,而是仅在满足2个条件时触发:
编辑:感谢Crisim Il Numenoreano帮助我更详细地解释。 :)