如何通过jquery中的.on函数在多个选择器上附加不同的事件?
我的页面上有以下两个元素:
在我的Javascript代码中,我有以下内容:
$(document).ready(function() { $("#button,#textfield").on("click change",function() { // This won't work because I don't need click function // to be worked on the text field }); });
我需要的是点击function按钮,只需要更改function就可以在文本字段上工作。 我该怎么做呢?
如果要为不同对象上的不同事件调用相同的代码,可以将事件处理代码放入公共函数中,然后在每个事件注册中指定确切的条件:
$(document).ready(function(){ function myEventHandler(e) { // your code here } $("#button").on("click", myEventHandler); $("#textfield").on("change", myEventHandler); });
将代码拆分为:
$(document).ready(function(){ $("#button").on("click",function(){ }); $("#textfield").on("change",function(){ }); });
你为什么把它们放在一起?
分开两个function:
$("#button").on("click change",function(){ // Handle button }); $("#textfield").on("change",function(){ // Handle Textfield });
分别分配:
$('#button').click(function(){ //button code here }); $('#textfield').change(function(){ // text field code here });
如果您希望它们执行相同的操作,请创建一个单独的函数:
function doSomething() { // text field and button code here }
然后引用该函数:
.click(doSomething); ... .change(doSomething);
此外,我应该告诉你,“改变”并不是你想要的文本字段。 键入时不会触发,只有在更新后“模糊”文本字段时才会触发。 它更适用于复选框和那种性质的东西。 我会用.keyup()
尝试:
$(document).ready(function(){ $("#textfield").on("change",function(e){ my_function(e); }); $("#button").on("click",function(e){ my_function(e); }); function my_function(e){ // e = event... // your actions... } });
如果您只想要一个.on函数,请尝试使用这样的方法
$("#button,#textfield").on("click change",function(){ if ($(this).attr('type') == "text"){ alert("Do your change function"); } else if ($(this).attr('type') == "button"){ alert("Do your click function"); } });
见演示