2013-07-18 11 views
10

Ich habe 3 Tasten b1, b2, b3. Wie zu binden klicken Sie auf 3 Tasten. Var b1 = $ ("# b1"); Var b2 = $ ("# b2");jquery Bindung klicken Ereignis zu mehreren Tasten

$(b1,b2).bind("click", function(){}); 

jsfiddle.net/Xqpaq/

+0

Ihr Code nicht korrekt ist, können Sie nicht Verwenden Sie einen jQuery-Selektor für kommagetrennte jQuery-Selektionen. Wenn Sie dies tun möchten, verwenden Sie eine Array-Notation wie: $ ([b1, b2]) – Kevin

+0

Ich möchte nur var-Objekte verwenden ... Selektoren nur vom var-Typ sein – user321963

+0

Sie könnten auch einfach angeben: var b1 = "b1", b2 = "b2"; und dann benutze $ (b1, b2) .bind() ... – Kevin

Antwort

6

Geben jQuery ein Array wird jedes Element in ein größeres Objekt jQuery kombinieren, so können Sie Ihre Veranstaltungen in einem Schuss binden.

Angenommen, b1 und b2 ist ein DOM-Element, kein jQuery-Objekt.

$([b1, b2]).click(function (evt) { 
    // your code goes here 
}); 

JSFiddler bei http://jsfiddle.net/XF3Vv/1/.

+0

Könnte jemand eine Geige auf diese? Ich kann es nicht zur Arbeit bringen, aber es scheint wirklich cool – user1234

+0

scheint nicht zu funktionieren http://jsfiddle.net/arunpjohny/ehgMa/3/ –

+1

Hinzugefügt Geige Link – user321963

8

sie in einem div wickeln dann für alle div Ziel die Schaltflächenelemente.

<div id="button-nav"> 
    <button class="button" type="button">button 1</button> 
    <button class="button" type="button">button 2</button> 
    <button class="button" type="button">button 3</button> 
</div> 

die js:

$('#button-nav').on('click','button', function (evt) { 
    //-- do stuff 
}); 

JS Fiddle of the above

10

Ich würde auf die Schaltfläche klicken Funktion eine separate Funktion stark machen vorschlagen und dann binden jede Taste, um es

http://jsfiddle.net/Xqpaq/1/

$(document).ready(function(){ 

    var b1 = $("#btn1"); 
    var b2 = $("#btn2"); 
    var b3 = $("#btn3"); 

    var btnClick = function(e){ 
     alert("Button: "+e.currentTarget.id); 
    } 

    b1.on('click', btnClick); 
    b2.on('click', btnClick); 
    b3.on('click', btnClick); 

}); 

Die Alternative ist classes anstelle von ids zu verwenden.Wie so:

http://jsfiddle.net/Xqpaq/2/

<input type="button" id="btn1" class="btn-click-action" value="submit"/> 
<input type="button" id="btn2" class="btn-click-action" value="submit2"/> 
<input type="button" id="btn3" class="btn-click-action" value="submit3"/> 

Dann JS:

var btnClassClick = function(e){ 
    alert("Button clicked from class: "+e.currentTarget.id); 
} 

$('.btn-click-action').on('click', btnClassClick); 
4

in Ihrem Fall:

nur tun einfach wie diese unter:

cj('#b1, #b2').click(function(){ 

     alert('you clicked either button 1 or button 2'); 

}); 

typisches Beispiel: für verschiedene Elemente ein Ding wie dies tun, wenn Sie dann Ereignis ausgelöst werden, klicken Sie auf diese auf eines dieser Elemente klicken, wird

cj('#_qf_Contact_upload_view-top, #_qf_Contact_upload_new-top, ,#_qf_Contact_upload_view-bottom, #_qf_Contact_upload_new-bottom').click(function(){ 
    console.log(cj('#first_name').val()); 
    if(cj('#first_name').val() == '' || cj('#first_name').val().length == 0) 
    { 
     alert('First Name is a required field, cannot be empty'); 
     return false; 
    } 
}); 

hoffen, dass es ein etwas hilft :)

Verwandte Themen