【发布时间】:2016-08-25 12:23:09
【问题描述】:
无论如何,我得到了这个应该打开导航的按钮。
HAML:
%button#nav-toggle{ :navigate => 'false' } Menu
HTML:
<button id='nav-toggle' navigate='false'>Menu</button>
我正在像这样绑定两次点击:
jQuery
$(document).ready(function(){
$("#nav-toggle[navigate='false']").click(function(){
console.log("opening nav");
$("#nav-toggle").attr('navigate','true');
$( "#masthead" ).animate({
height:'100vh',
}, {
duration: 1000,
queue: false,
done: function() {
console.log("first done");
}
}
);
});
$("#nav-toggle[navigate='true']").click(function(){
console.log("closing nav");
$("#nav-toggle").attr('navigate','false');
$( "#masthead" ).animate({
height:'10vh',
}, {
duration: 1000,
queue: false,
done: function() {
console.log("second done");
}
}
);
});
});
由于某种原因,当我第二次单击该按钮时(当它的导航属性设置为 true 时,它仍然会启动这两个事件中的第一个事件。
我在这里错过了什么?
完整代码在这里:Codepen
【问题讨论】:
-
您不能将事件绑定到
$("#nav-toggle[navigate='true']"),因为在执行代码时,不存在这样的元素。您应该将点击事件直接绑定到按钮(没有属性选择器)并在点击处理程序中决定您想要做什么(您仍然可以获取/设置属性)。 -
您可以绑定单击并在函数内部检查属性并执行您的逻辑
标签: javascript jquery events jquery-events jquery-click-event