如何检查是否已完成某些操作,如果存在,请不要再次执行此操作

时间:2014-05-19 05:19:39

标签: javascript jquery

我喜欢这样做,当在.content上时,然后创建一个新的并附加到.mainPage,但只想附加一次。

以下是样本 http://jsfiddle.net/4Qs97/

<div class="mainPage">
    <div class="content"></div>
</div>

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

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

我知道我可以使用one来实现这一目标,但想知道是否有使用&#34; on&#34;要实现相同的目标,只要在已经采取行动的情况下追加一次: - )

由于

5 个答案:

答案 0 :(得分:2)

您可以使用标记 variable来记住添加的元素。

<强> Live Demo

var $newDiv = '<div class="content">This</div>';
alreadyAdded = false;
$('.content').on('mouseover', function(){
    if(alreadyAdded) return;
  $($newDiv).appendTo('.mainPage');
    alreadyAdded = true;
});

答案 1 :(得分:1)

您可以使用 .one()

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

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

<强> Updated Fiddle

答案 2 :(得分:0)

<强> Demo

在这种情况下,您必须使用一个

。但是你要求我使用了标志变量

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

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

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

    });

答案 3 :(得分:0)

您只需删除课程即可实现。

var $newDiv = '<div class="content">This</div>';
$('.content').on('mouseover', function(){
  $(this).removeClass('content');
  $($newDiv).appendTo('.mainPage');        
});

现场演示:
http://jsfiddle.net/5DNTP/

答案 4 :(得分:0)

如果事件监听者的唯一目的是append,请使用off将其删除,但话会再次与one

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

http://jsfiddle.net/4Qs97/5/