将类添加到div -JQuery后运行单击事件

时间:2013-09-25 13:07:38

标签: jquery

我在处理打开/关闭导航时遇到了一个问题。我有按钮隐藏,一旦点击它将首先添加新类;而不是删除原来的。比,一旦打开点击,反过来就会发生。问题是当尝试在打开的部分上运行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");
    });
});

1 个答案:

答案 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
})