使用jQuery动态添加onClick事件


128

由于使用了插件,因此无法像往常一样将“ onClick”属性添加到HTML表单输入中。插件正在处理我网站中的表单部分,并且没有提供自动执行此操作的选项。

基本上我有这个输入:

<input type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

我想使用jQuery onload向其添加onClick,使其像这样:

<input onClick="myfunction()" type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style="">

我该怎么做呢?

我知道这可能不是标准做法,但在我的情况下,这似乎是最简单的选择。

我是jQuery的新手,因此非常感谢您的帮助。

Answers:


211

您可以使用click事件并调用函数,也可以将逻辑移到处理程序中:

$("#bfCaptchaEntry").click(function(){ myFunction(); });

您可以使用click事件并将函数设置为处理程序:

$("#bfCaptchaEntry").click(myFunction);

.click()

将事件处理程序绑定到“ click” JavaScript事件,或在元素上触发该事件。

http://api.jquery.com/click/


您可以使用on绑定到的事件"click"并调用函数,或者将逻辑移到处理程序中:

$("#bfCaptchaEntry").on("click", function(){ myFunction(); });

您可以使用on绑定到的事件"click"并将您的函数设置为处理程序:

$("#bfCaptchaEntry").on("click", myFunction);

。上()

将一个或多个事件的事件处理函数附加到所选元素。

http://api.jquery.com/on/


简单易懂。正是我想要的。另一个问题:使用jQuery集成背景颜色更改的最简单方法是什么?还是最好使用'style.backgroundColor =“ white”;' 在功能部分?
克劳迪奥·德尔加多

38

如果您知道对象客户端名称,则尝试这种方法(它是Button还是TextBox并不重要)

$('#ButtonName').removeAttr('onclick');
$('#ButtonName').attr('onClick', 'FunctionName(this);');

如果要使用JQuery将onClick事件添加到服务器对象,请尝试此操作

$('#' + '<%= ButtonName.ClientID %>').removeAttr('onclick');
$('#' + '<%= ButtonName.ClientID %>').attr('onClick', 'FunctionName(this);');

此函数设置函数,而无需同时调用它。
瓦西利斯

使用.attr onClick而不是.click也意味着您可以直接分配脚本命令,而不用调用诸如"history.go(0);"或的函数"alert('Hi!');"
乔纳森

2
这正是我需要的,因为我希望既可以定义一个单独的函数,又可以设置该函数而不调用它。谢谢你晚了4年。
凯文·沃克

1
我喜欢这个答案,因为它不调用函数而是仅设置onclick
gdrt

18

尝试以下方法,

$('#bfCaptchaEntry').on('click', myfunction);

或者如果jQuery不是绝对必要,请尝试以下操作,

document.getElementById('bfCaptchaEntry').onclick = myfunction;

但是上述方法没有什么缺点,因为它将onclick设置为属性,而不是注册为处理程序。

进一步了解这篇文章https://stackoverflow.com/a/6348597/297641


当您说“但是上述方法”时,是否仅引用纯JavaScript方法尚不清楚 .onclick,还是将两个版本组合为一个版本(与using相比).click。我知道它实际上是前者,就像.on注册处理程序一样,但是必须检查其他地方才能学到。如果您的回答更清楚,这对将来的读者将是一件好事...;)
AntonChanning


1
let a = $("<a>bfCaptchaEntry</a>");
a.attr("onClick", "function(" + someParameter+ ")");

0

或者,您可以使用箭头功能进行定义:

$(document).ready(() => {
  $('#bfCaptchaEntry').click(()=>{

  });
});

为了获得更好的浏览器支持:

$(document).ready(function() {
  $('#bfCaptchaEntry').click(()=>{

  });
});

1
我看不出它如何提供任何新内容,因为已接受的答案已经建议了该.click()方法。我认为,使用箭头功能还是常规功能都是与所提问题无关的讨论。为了获得更好的浏览器支持,您可能应该删除两个箭头功能,而不仅仅是第一个。
agrm

因为是使用jQuery的另一种方式
Gabriel Jaime Sierra Rua
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.