Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查某件事是否已完成,如果存在,则不要再次执行_Javascript_Jquery - Fatal编程技术网

Javascript 如何检查某件事是否已完成,如果存在,则不要再次执行

Javascript 如何检查某件事是否已完成,如果存在,则不要再次执行,javascript,jquery,Javascript,Jquery,我想这样做,当打开.content,然后创建一个新的,并附加到.mainPage,但只想附加一次 这是样品 var$newDiv=‘This’; $('.content')。在('mouseover',function()上{ $($newDiv).appendTo('.mainPage'); }); 我知道我可以使用one来实现这一点,但我想知道是否有办法使用“on”来实现相同的目标,如果已经采取了行动,只需附加一次:-) 谢谢您可以使用标志变量来记住添加的元素 var $newDiv

我想这样做,当打开
.content
,然后创建一个新的,并附加到
.mainPage
,但只想附加一次

这是样品


var$newDiv=‘This’;
$('.content')。在('mouseover',function()上{
$($newDiv).appendTo('.mainPage');
});
我知道我可以使用
one
来实现这一点,但我想知道是否有办法使用“on”来实现相同的目标,如果已经采取了行动,只需附加一次:-)

谢谢

您可以使用标志
变量
来记住添加的元素

var $newDiv = '<div class="content">This</div>';
alreadyAdded = false;
$('.content').on('mouseover', function(){
    if(alreadyAdded) return;
  $($newDiv).appendTo('.mainPage');
    alreadyAdded = true;
});
var$newDiv='This';
alreadyAdded=假;
$('.content')。在('mouseover',function()上{
如果(已添加)返回;
$($newDiv).appendTo('.mainPage');
alreadyAdded=true;
});

var $newDiv = '<div class="content">This</div>';
alreadyAdded = false;
$('.content').on('mouseover', function(){
    if(alreadyAdded) return;
  $($newDiv).appendTo('.mainPage');
    alreadyAdded = true;
});
在这种情况下,您必须使用one

。但正如你们所要求的,我使用了flag变量

  var $newDiv = '<div class="content">This</div>';
    var isAppend=false;

 $('.content').on('mouseover', function(){
        if(!isAppend){
            isAppend=true;

            $($newDiv).appendTo('.mainPage');
        }

    });
var$newDiv='This';
var isAppend=假;
$('.content')。在('mouseover',function()上{
如果(!出现){
isAppend=true;
$($newDiv).appendTo('.mainPage');
}
});
您可以使用

var $newDiv = '<div class="content">This</div>';

$('.content').one('mouseover', function () {
    $($newDiv).appendTo('.mainPage');
});
var$newDiv='This';
$('.content').one('mouseover',function(){
$($newDiv).appendTo('.mainPage');
});

只需删除类即可实现

var $newDiv = '<div class="content">This</div>';
alreadyAdded = false;
$('.content').on('mouseover', function(){
    if(alreadyAdded) return;
  $($newDiv).appendTo('.mainPage');
    alreadyAdded = true;
});
var $newDiv = '<div class="content">This</div>';
$('.content').on('mouseover', function(){
  $(this).removeClass('content');
  $($newDiv).appendTo('.mainPage');        
});
var$newDiv='This';
$('.content')。在('mouseover',function()上{
$(this.removeClass('content');
$($newDiv).appendTo('.mainPage');
});
现场演示:

如果事件侦听器的唯一目的是添加
代码,请使用
off
将其删除,但它与
one
相同

$('.content').on('mouseover', function(){
  $($newDiv).appendTo('.mainPage');
  $(this).off('mouseover');
});

查看我的答案。您只需删除“content”类就可以实现它!您可以使用@Felix回答的“one()”,这样就不需要使用变量来知道操作是否完成。但是你的回答仍然很好。@BhushanKawadkar,OP知道这个问题,他在问题中提到“我知道我可以用一个来实现这个目标”,不用担心,一个()似乎是更好的选择,他可能想知道另一个选择