onclick事件监听器只运行一次

时间:2017-12-15 08:04:25

标签: javascript jquery

我正在用jQuery编写一些代码并试图添加一个onclick事件监听器。当我运行我的代码时,事件监听器运行一次,但不重复。为什么会这样?

如果我用addEventListener('click'...)替换它,它可以正常工作。

$(function(){
  var url = "https://www.bensound.com/bensound-img/jazzcomedy.jpg";
  var doSomething = {
  clickedNow: function(){
  alert("Clicked ok now");
  }
  };
  
  $('#click-me').attr('src',url);
  $('#click-me').onclick = doSomething.clickedNow();
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<figure>
<img id="click-me" alt="An image went missing here">
<figcaption><figcaption>
</figure>

3 个答案:

答案 0 :(得分:2)

  $('#click-me').onclick = doSomething.clickedNow();

在这里设置onclick事件等于函数doSomething.clickedNow的结果,这不是你想要的。

您要做的是为click事件添加一个事件监听器并在那里执行您的功能。

试试这个:

$('#click-me').click(function(){
      doSomething.clickedNow();
  });

更好的是使用&#34; on&#34;像这样

$( "#click-me'" ).on("click", function() {
  doSomething.clickedNow();
});

答案 1 :(得分:1)

&#13;
&#13;
#include "../A/A.h"
&#13;
$(function(){
  var url = "https://www.bensound.com/bensound-img/jazzcomedy.jpg";
  var doSomething = {
  clickedNow: function(){
  alert("Clicked ok now");
  }
  };
  
  $('#click-me').attr('src',url);
  $('#click-me').click(function(){
      doSomething.clickedNow();
  });
  
});
&#13;
&#13;
&#13;

您正在使用jquery,而在jquery中有<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <figure> <img id="click-me" alt="An image went missing here"> <figcaption><figcaption> </figure>个东西。正确的语法在上面的代码中。检查一下。它正在工作。

答案 2 :(得分:1)

onClick是您尝试添加到jQuery选择器的JavaScript函数。如果您真的想这样做,那么您可以通过将其更改为:

来实现

$('#click-me')[0].onclick = doSomething.clickedNow;

使用像他们的答案中建议的Code Lover这样的jQuery点击功能可能会更好。

&#13;
&#13;
$(function(){

  var url = "https://www.bensound.com/bensound-img/jazzcomedy.jpg";
  var doSomething = {
    clickedNow: function(){
      alert("Clicked ok now");
    }
  };
  
  $('#click-me').attr('src',url);
  $('#click-me')[0].onclick = doSomething.clickedNow;
  
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<figure>
<img id="click-me" alt="An image went missing here">
<figcaption><figcaption>
</figure>
&#13;
&#13;
&#13;