这是个调用维基百科的测试,我设置了focus,blur,keypress事件,其中keypress是嵌套在focus中的,我的问题操作是:点击input获得焦点,输入任意字符,然后焦点离开input对字符串进行清空,再次点击input输入字符并回车,进行查询操作。
结果是keypress事件触发了两次,我的预期是一次,想求助这是什么原因?
window.onload = function() {
var input = $('input');
//查询框获得焦点
input.focus(function () {
$('.search').css('background-image', 'initial');
//回车查询
input.on('keypress',function(event) {
if(input.val()) {
if (event.keyCode === 13) {
$('section:nth-child(n+2)').remove();console.log('1');
var itemArray = [];
var keyword = $(this).val();
var html = '';
var url = 'https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=' + keyword + '&prop=info&inprop=url&utf8=&format=json';
$.ajax({
dataType: 'JSONP',
url: url,
type: "get",
success: function (response) {
for (var item in response.query.search) {
itemArray.push(response.query.search[item]);
}
//console.log(itemArray);
itemArray.forEach(function (val) {
html += '<section><h2>' + val.title + '</h2><p>' + val.snippet + '</p></section>';
});
$('body').append(html);
},
error: function (e) {
//失败执行
alert(e.status + ',' + e.statusText);
}
});
}
}
});
});
input.blur(function () {
input.val('');
setTimeout(function(){
$('.search').css('background-image', 'url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEpElEQVRoQ92a3XEUMQzHpQogjzwRKoBUAKkAUgGXCoAKIBVAKiCpgKQCkgq4DuDeeCNUYOZv5IxOsff8tXd7q5mdXO521/5ZkmXLYuokztELInpJRIdE/jMEn3H9kgvf3cjnW2b//VaFW1oTyLdE9EbASl8H4CsiOt8WfBWwc/SKiD4S+b+9BJo/Y/YWMJoUAYtGPxeArsR8YdZPMykAfDqWxrOBnfMa/TTQ6Wvxz2VKS87RY/FvWAYu+HxM7tAWM51nDlL2bRuBpZPfElqFBr8Q0QUzoZNF4pyf0BZE9J6IHkUehn9D28XvTnVkEFg6BNgw64b3/BUNALZZZFABHQNfEtFxL+gksMD+IPJmqAWmu+jVAf1iafMiYurdoKPAMuLfI5r9wOxNeFRxzs8VmDO0dIFOAQPWhhz4EkZ/K+Kc9+2vprErZjpp6cAD4MTobhU2ACWgm6xsDVjiLPxWS1MDLdrAsxEFYMY+qo3TFtia8jWzXzbuVJzzqy8ds6tN+x5YlosADoLQczjGbFw6ejJ7/zTPIVQVL0M1sNXuTk3ZDkrEtC+Z/cRWJB444rsrZr8KmoxIqMTuSq/InpX6cgBGbH2n6CalXTVrN/czAMM/tEYPpuC7EbNGH7UvY6NyVGKGHDHnSczMKQjnCCuu5+r3IuUAGAt27HGDTNKcB8z6hNlnTbIEwNYvqqb7rNY63OScXxdgBxcEWZKhffpaqwBeC+rMtHGP3KHf1a+IuGBReNo7YAmjTo0Ysp/ZuTUA6xl6cvE3ZgrOURNw9cPVdtn4YCuw9uE7Zjpo7M/oj/cEpqlPWj18GFkMnB4EKQrko6vTNNBjlrb5o9nHYZs7KgrkO9Bw00IJYQlp2D+1cW0HwEhB6Tx5kQuG3ZJNoRTvM7cBHvHfokUH+hiA7QZikmYdWfcXb3QCsN1nIjMILXc702m1AHE9rAr1SUiROd9rWGKbDU+T0nJEu0WbhjDgOokX03J1/rdVo/r5RL68ap6xeWmr5RtmOu7Z+dJ3Jc65qrS7ZtJi1tAyUig6M7hT03bOny/pdGxTvjx2thQ7xNrV2VLsFLEopWMtKnV6aE0bz20VOlFigWofhNBqGToQt4sRNIK6i7Pq1jIeFJ9FUtGeKvxmpicZrxi8ZQgY8Q7QOiWKl41WZSOzMXzWllgECNSSnLZAb6rxADTM+3WkEfgXTKx5cSJaxYl/jrk2QWdlKCNBP/ADFgNSVUmnKvlgvraWBG2gbAnf6/06vq+GzgKWkIVOYWsWKy/CLQhnMHdcSAbi/zURQBSohTqtlOki9KBwxifYnfOD+gCaiLCWLrKwbGBpGKMNs7MFJy1uZZ+9RBsWJAFdXOhSBBx6JgfU8GE76i3gAEUUSFbY9oCuAlbg0DiOPnDFJrZNA3Ar1bTZlXyt0E3AER8NvomfQq20vi3UTcPPcdRZ5H9qoGM+nWXeXYE3qbPn75FTzzBxDpYp7i2wihy2eG1Q03sNXAO998AD0JgvsLNaWw/MAngAGpMifPoeejbAudCzAs6Bnh3wwLr/v3n3jI1TepdsVLDA0Zud5WyBRdPYjWno1ayBFXSo5F/8A9N/2lN2UHxrAAAAAElFTkSuQmCC")');
}, 200);
});
}
没有仔细看代码,解决方案:
把on前面加个解绑事件
可能有事件外面有循环,先把事件解绑,在进行添加就可以了,请采纳