1

我想为 2 个选择器运行切换功能。我有一个带有类的元素.rgstr和另一个带有类的元素,.disable它们是我的选择器。

这是我的代码:

$(document).ready(function(){
    $('.rgstr, .disable').click(function() {
        var clicks = $(this).data('clicks');

        if (!clicks) {
            $('.loginpanel').animate({ right: "0"}, 300, function() {
                $('.lgnreg > div').stop().animate({right:"0"},1200,'easeOutExpo');
            });
            $('.disable').css("display","block");
        } 
        else {
            $('.loginpanel').animate({ right: "-300px" }, 250, 'easeInOutCirc', function() {
                $('.lgnreg > div').stop().animate({right:"-25px"},250,'easeInOutCirc');
            });
            $('.disable').css("display","none");
        }
        $(this).data("clicks", !clicks);
    });
});

HTML:

<div class="disable"></div>
<div class="rgstr">
    <a href="#">Login/Register</a >
</div>
<div class="loginpanel">
<div class="lgnreg">
    <div class="login">
        <form>
            <input type="text" name="lgnusername" id="lgnusername" value="Username" />
            <input type="text" name="lgnpassword" id="lgnpassword" value="Password" />
            <input type="submit" name="submit" id="submit" value="Login" />
        </form>
    </div>

    </div>
</div>

我希望在.rgstr单击.loginpanel时打开,然后在单击时.disable关闭。现在它可以工作了,但只需点击 2 次。.rgstr第一次我点击.loginpanelgets打开,但我必须点击两次.disable才能关闭.loginpanel,下一次也一样。我怎样才能解决这个问题?

4

1 回答 1

1

您的'clicks'数据元素仅在您单击的元素上,而不是在两个元素上。

因此,当您单击 时.rgstr,只会更新它的数据,而不是更新它的数据.disable。当.disable第一次单击时,它clicksundefined,因此运行第一个if块(就像您第一次单击时一样.rgstr)。

您需要将clicks变量保存在两个元素都可以读取/写入相同值的地方。

于 2013-01-18T17:06:40.317 回答