Javascript OnClick 需要双击而不是单击
Javascript OnClick needs double instead of single click
这是一个从数组 (ar_menu_ref) 中查找结果的简短脚本。结果是 links 和一个简单的 url。但是我需要双击打开 link.
Input > liveSearchValue(用户输入一个值)
div > liveSearchResultList(由 liveSearchMenu() 生成的结果)
第一次点击生成的-link再次运行"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
The first click on the generated -link runs "liveSearchMenu()" again. But why?
$('input').bind('change keyup',function (){
liveSearchMenu();
});
这是监听您的 input
的代码。它监听任何输入框中的变化,但它也监听任何输入框中的任何按键(keyup)的释放。
也许您误解了 change
的作用。它不会在元素的值更改时触发,相反,它仅在满足 2 个条件时触发:
- 元素模糊(失去焦点);
- 该元素的值与其获得焦点时的值不同。
编辑:感谢 Crisim Il Numenoreano 帮助我更详尽地解释。 :)
这是一个从数组 (ar_menu_ref) 中查找结果的简短脚本。结果是 links 和一个简单的 url。但是我需要双击打开 link.
Input > liveSearchValue(用户输入一个值) div > liveSearchResultList(由 liveSearchMenu() 生成的结果)
第一次点击生成的-link再次运行"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
The first click on the generated -link runs "liveSearchMenu()" again. But why?
$('input').bind('change keyup',function (){
liveSearchMenu();
});
这是监听您的 input
的代码。它监听任何输入框中的变化,但它也监听任何输入框中的任何按键(keyup)的释放。
也许您误解了 change
的作用。它不会在元素的值更改时触发,相反,它仅在满足 2 个条件时触发:
- 元素模糊(失去焦点);
- 该元素的值与其获得焦点时的值不同。
编辑:感谢 Crisim Il Numenoreano 帮助我更详尽地解释。 :)