我在处理打开/关闭导航时遇到了一个问题。我有按钮隐藏,一旦点击它将首先添加新类;而不是删除原来的。比,一旦打开点击,反过来就会发生。问题是当尝试在打开的部分上运行click事件时,没有任何反应?
示例:
<div class="hideNshow">
<span><a href="#" onclick="return false">Hide</a></span>
</div><!-- .hideNshow -->
现在点击.hideNshow
后,新类将为.openNav
- 问题是在ready语句中使用click事件来检查单击.openNav
是否将无法运行。< / p>
我不确定这里有什么问题:
将不胜感激的想法和建议。
大卫
修改
这是Jquery:
$(document).ready(function () {
var active = 0;
var lastheight, lastMargin, lastmargintop;
$(".open").click(function() {
alert("working");
$("#mainHead").css('height', lastheight);
$(".openNav").html("Hide");
$(".openNav").css('margin-top', lastMargin);
$(".about").css('margin-top',lastmargintop);
$(".openNav").addClass("hideNshow");
$(".hideNshow").removeClass("openNav");
});
$(".hideNshow").click(function() {
lastheight = $("#mainHead").height();
lastMargin = $(".hideNshow").css('margin-top');
lastmargintop = $(".about").css('margin-top');
$("#mainHead").css('height', '35px');
$(".hideNshow").html("Open");
$(".hideNshow").css('margin-top', '-30px');
$(".about").css('margin-top','45px');
$(".hideNshow").addClass("openNav");
$(".openNav").removeClass("hideNshow");
});
});
答案 0 :(得分:4)
这是因为当您使用普通事件处理程序时,只会在执行注册代码时将那些元素添加到满足选择器的元素中 - 在您加载页面的情况下,div可能具有hideShow
类只有这样才会添加处理程序。
如果您希望懒惰地评估选择器,请使用事件删除
您需要使用事件委派
//use document or any other immediate parent of the div
$(document).on('click', '.hideNshow', function(){
//handle hide
})
//use document or any other immediate parent of the div
$(document).on('click', '.openNav ', function(){
//handle show
})