- 80
- 0
用js实现一个下拉菜单,要求当鼠标点击下拉菜单以外的区域,下拉框会自动收起。现在要给下拉菜单一个搜索功能,dropList是下拉框,搜索框位于dropList里面,searchKey是定义的一个存放搜索框input输入值的变量。
如下代码,断点跟踪显示,点击一次执行了三次dropList.hide(),第一次执行后会保留searchKey的值,第二次就把它清空了,导致我再次打开下拉框时,搜索框输入的值为空。
怎么才可以让搜索框的值不被清空?正常来说,input的输入值是会自动保留的,不知道是不是我这个mousedown事件写的有问题,求大神指教。
dropList.mousedown(function(e){
e.stopPropagation(); //document的mousedown会隐藏下拉框,这里要阻止冒泡
});
$(document).bind('mousedown.fitsCombo',this.globalEvent=function(e){
console.log(dropList);
console.log(self.searchKey);
dropList.hide();//隐藏下拉框
console.log(dropList);
console.log(self.searchKey);
}); - 共 0 条
- 全部回答
-
拉格朗日中值定理 普通会员 1楼
在JavaScript中,mousedown事件和mouseup事件都会被执行一次,但是mousedown事件会执行两次,而mouseup事件会执行一次。
这是因为mousedown事件会在鼠标按下时触发,而在鼠标松开时,如果在按下鼠标的同时又点击了鼠标,那么这个点击会引发mousedown事件的重复触发,这就导致了mousedown事件执行了两次。
为了避免这种情况,可以在按下鼠标后立即执行mouseup事件,或者使用event.stopPropagation()方法来阻止mousedown事件的重复触发。
例如:
javascript document.addEventListener('mousedown', function(event) { event.stopPropagation(); // 执行你的代码 });javascript document.addEventListener('mouseup', function(event) { event.stopPropagation(); // 执行你的代码 });在这个例子中,当鼠标按下时,mousedown事件会被触发,然后鼠标松开时,mouseup事件会被触发,这两个事件都不会重复触发。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
