jQuery if else语句问题

时间:2013-09-13 18:16:39

标签: jquery if-statement

我是jQuery的新手。我试图让这个if if语句运行,但我似乎只能得到if else语句的一半。

$("#og").click(function () {
    if ($('#og').data('clicked')) {
        //#og element clicked run function #1
        $("#about").click(function () {
            $("#about").animate({ 'top': -1130 }, 2000);
            $("#aboutform").animate({ 'top': -1120 }, 2000);
            alert("running click code")
        });
    } else { //#og element not clicked run function #2
        $("#about").click(function () {
            $("#about").animate({ 'top': -1190 }, 2000);
            $("#aboutform").animate({ 'top': -1170 }, 2000);
            alert("running no click code")
        });
    }
});

我想检查是否已点击div(#og)。如果它有,我希望它在#about和#about形成一个位置,当点击#about时。如果没有单击#og,我希望在#about被点击时将#about和#about形式设置为另一个位置。

6 个答案:

答案 0 :(得分:4)

设置$(this).data('clicked', true);,然后立即检查点击值是否为真。它看起来像你永远不会看到第二个else块发生,因为你从未设置点击为false。

答案 1 :(得分:3)

这对我来说没有意义:

$("#og").click(function () { // clicked
    $(this).data('clicked', true); //assign true 
    if($('#og').data('clicked')) { //question if true? you just assigned true to it

这不会转到其他地方。

答案 2 :(得分:2)

根据您对所尝试内容的编辑,我认为这将是一个更好的解决方案。事件处理程序中的绑定事件处理程序通常不是最佳方法:

$('#og').click(function() { $(this).data('clicked', true); });

$('#about').click(function() { 
    var aboutTop = -1190;
    var aboutFormTop = -1170;
    if ($('#og').data('clicked')) {
        aboutTop = -1130;
        aboutFormTop = -1120;
    }

    $("#about").animate({ 'top': aboutTop }, 2000);
    $("#aboutform").animate({ 'top': aboutFormTop }, 2000);
});

答案 3 :(得分:1)

上面的代码仅在单击$("#og")时执行,因此在函数$(this)中始终为$("#og")。由于您总是设置“点击”'如果$(这个)涉及$("#og")的条件将永远为真。

答案 4 :(得分:1)

我不确定你在这里想要完成什么。看来你正在收听#og上的点击事件,但只有在点击时才会触发事件,因此不清楚为什么要检查点击的数据属性设置为什么。

你应该只做:

$('#og').click(function() { // do things on click
});

如果没有点击,就不会发生任何事情。

答案 5 :(得分:1)

所以基本上你的代码中存在逻辑错误:

  。

$( “#OG”)点击(函数(){});

此函数是单击事件的回调函数。因此,当用户单击元素#og时,将调用此函数。你要做的是在用户没有点击#og(我假设)内部回调函数来点击#og时运行一些代码。这根本没有意义。

我认为更好的方法是运行一些代码,直到用户单击#og元素然后运行其他代码。