1

我在处理打开/关闭导航时遇到了一个问题。我有按钮隐藏,一旦单击它,它将首先添加新类;而不是删除原来的。然后,一旦单击打开,就会发生相反的情况。问题是当尝试在打开部分运行点击事件时,没有任何反应?

例子:

 <div class="hideNshow">
   <span><a href="#" onclick="return false">Hide</a></span>
 </div><!-- .hideNshow -->

现在一旦.hideNshow被点击,新类将是.openNav- 问题是在就绪语句中使用点击事件来检查是否.openNav被点击不会运行。

我不确定这里有什么问题:

想法和建议将不胜感激。

大卫

编辑

这是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");
    });
});
4

1 回答 1

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
})
于 2013-09-25T13:10:36.097 回答