我是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形式设置为另一个位置。
答案 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元素然后运行其他代码。