2013-04-02 48 views
1

我有兩個要素如下我的網頁上:如何通過jQuery中的.on函數在多個選擇器上附加不同的事件?

<input type="text" id="textfield"/> 
<input type="button" id="button" value="CLICK"/> 

而且在我的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 
    }); 
}); 

我需要的是要在按鈕的工作點擊功能,只需要更改要在文本字段上工作的功能。我該怎麼做呢?

+0

編寫單獨的函數在哪裏做的一切行動,只是觸發它的每個單獨的事件.. – Svetoslav

+0

你可以在函數中測試你點擊哪種類型的輸入,而不是單獨給出它容易理解和閱讀的內容。 – Dineshkani

+0

我需要在單一的.on函數中工作,不想聲明多個函數,該怎麼做 – Crazyrubixfan

回答

0

分割你的代碼:

$(document).ready(function(){ 
    $("#button").on("click",function(){ 

    }); 
    $("#textfield").on("change",function(){ 

    }); 
}); 

你爲什麼把它們放在一起?

3

如果你想被要求對不同的對象不同的事件相同的代碼,你可以把事件處理代碼到一個共同的功能,然後指定每個事件註冊的確切條件:

$(document).ready(function(){ 
    function myEventHandler(e) { 
     // your code here 
    } 

    $("#button").on("click", myEventHandler); 
    $("#textfield").on("change", myEventHandler); 
}); 
+0

哇,好吧這會最小化代碼,謝謝 – Crazyrubixfan

0

嘗試:

$(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... 
    } 
}); 
+0

OKay,所以我們必須給兩個.on函數來完成這個場景的權利,謝謝 – Crazyrubixfan

0

獨立的兩個功能:

$("#button").on("click change",function(){ 
    // Handle button 
}); 

$("#textfield").on("change",function(){ 
    // Handle Textfield 
}); 
0

指定他們separatel Y:

$('#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()

+0

好的謝謝你,我是在輸入文本框和選中其他元素之後打入的 – Crazyrubixfan

0

嘗試,如果你只想要一個。對功能

$("#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"); 
} 
}); 

See Demo

+0

好吧,這是我認爲的最小化代碼,我會接受這個,謝謝你 – Crazyrubixfan

相關問題