如何在第一次单击后禁用触发器单击

时间:2016-07-05 07:12:54

标签: javascript jquery onclick

onclick a个元素我需要调用一个函数并仅触发#myDiv一次。假设我点击Apple'它应该只触发一次的任意次数。然后去橘子'或者' Banana'然后回到Apple'再次和早些时候一样,我只需触发一次。假设可以有任意数量的a,那些是动态的。我怎样才能做到这一点?



function activateMyClick(myId) {
   $('#myDiv').trigger('click');
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a onclick="activateMyClick(7)" id="7" class="active">Apple</a>
<a onclick="activateMyClick(8)" id="8" class="active">Orange</a>
<a onclick="activateMyClick(9)" id="8" class="active">Banana</a>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:5)

当您使用jQuery对此进行标记时,您可以删除过时的on*事件属性并使用one()来实现此目的:

&#13;
&#13;
$('a.active').one('click', function() {
  $('#myDiv').trigger('click');
});

// for demonstration purposes only:
$('#myDiv').click(function() {
  console.log('div click raised!');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<a id="7" class="active">Apple</a>
<a id="8" class="active">Orange</a>
<a id="8" class="active">Banana</a>

<div id="myDiv"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:3)

一个简单的解决方案,但我认为按照你的描述工作。

  • Apple上的多次点击,触发只触发一次
  • 点击其他链接然后再次点击Apple,触发器再次触发

&#13;
&#13;
var currentId = "";

function activateMyClick(myId) {
  if (currentId != myId) $('#myDiv').trigger('click');
  currentId = myId;
}

$('#myDiv').click(function() {
  console.log('div click raised!');
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a onclick="activateMyClick(7)" id="7" class="active">Apple</a>
<a onclick="activateMyClick(8)" id="8" class="active">Orange</a>
<a onclick="activateMyClick(9)" id="8" class="active">Banana</a>
<div id="myDiv"></div>
&#13;
&#13;
&#13;