传递给jQuery的one()方法的函数仅在第一次触发事件时执行
Function passed to jQuery's one() method is executed only first time event is triggered
来自javascript n00b的你好。
我正在尝试使用一些基本的jquery代码创建自己的菜单过渡。
这个想法是菜单将是可见的,当用户单击"关闭"时,菜单将向左滑动并保持等待状态,当用户单击"打开"时,菜单将滑回其位置。
不幸的是,这适用于第一次点击,此后就不行了。如果回答这个问题的人给我一个简短的解释,说明为什么它不起作用,因为我正在尽力学习,我将不胜感激。
这是我的 HTML 代码
<div class="menubar" id="side">
</div>
<span class="menu close" id="close"></span>
<span class="menu open" id="open"></span>
还有我的 CSS:
.menubar
{
position:absolute;
left:0;
top:0;
z-index:9;
height:100%;
width:350px;
background:blue;
display:block;
}
.menu
{
position:absolute;
left:360px;
top:15px;
z-index:9;
width:50px;
height:50px;
display:block;
opacity:1 !important;
cursor:pointer;
}
.close
{
background:red;
}
.open
{
left:10px;
display:none;
background:green;
}
还有我的Javascript:
var $ = jQuery;
$("#close" ).one( "click", function() {
$( ".menubar" ).animate({left: "-350px"}, 300, function (){
});
$(this).css("display", "none");
$("#open").css("display","block")
});
$("#open" ).one( "click", function() {
$( ".menubar" ).animate({left: "0px"}, 300, function (){
});
$(this).css("display", "none")
$("#close").fadeIn(300)
});
还有我的jsFiddle:
http://jsfiddle.net/JjqVy/
谢谢
顾
名思义,传递给 .one()
方法的函数将在每个事件类型的每个元素最多执行一次。请改用.on()
:
var $ = jQuery;
$("#close").on("click", function() {
$(".menubar").animate({left: "-350px"}, 300, function () {
});
$(this).css("display", "none");
$("#open").css("display", "block")
});
$("#open").on("click", function() {
$(".menubar").animate({left: "0px"}, 300, function () {
});
$(this).css("display", "none")
$("#close").fadeIn(300)
});
只需在JS代码中将.one()更改为.on()。
改用这个:
$(document).ready(function() {
$("#id").click(function() {
whatever you want
});
});
一个人只会执行它一个:)
相关文章:
- 在没有焦点的情况下捕获画布上的第一次单击事件
- Javascript onclick事件在第一次单击时未启动
- 在单击事件中,第一次单击时激发代码一次,其余代码在所有单击时运行
- 无法在第一次单击事件时提交表单
- 为什么onchange事件没有在第一次更改时启动
- Javascript开始处理下一个事件,然后第一次完成
- Ajax onClick 事件第一次获取错误的结果,但第二次获取正确的结果
- JQuery 单击事件在第二次单击时触发,但不在第一次单击时触发
- 引导选项卡显示事件仅在第一次触发,而不会在第二个或以后的选项卡开关上触发
- 在第一次触摸启动事件时禁用所有点击事件是个好主意吗?
- 如何停止在第一次按下回车键时触发第一个 onclick 事件的元素
- AngularJS uib日期选择器没有'在uib选项卡中,不要在第一次打开/关闭事件之后显示日历
- 单击事件的值增量第一次不起作用
- 当父函数被激发时,不退出第一次按键事件
- 第一次加载页面时未触发的单击事件
- Meteor Change事件基于第一次选择的值
- 第一次单击时会跳过主干视图中的Jquery事件
- 列表视图点击事件只在jQuery Mobile中的对话框中第一次发生
- JQuery点击事件没有'第一次点击后无法工作
- 如何在每次按键时做一些事情,而不仅仅是第一次事件