2011-08-01 160 views
7

說我有兩個jQuery的選擇:jQuery選擇 - 多個項目

var txtA = $('#txtA'); 
var txtB = $('#txtB'); 

爲了安裝同一事件的功能,這是最巧妙的方法,還是我失去了一個明顯的部分語法或jQuery的wizardness的?

$(jQuery.merge(txtA , txtB)).click(function() { alert('hello'); }); 

謝謝。

+0

如果你已經有兩個選擇變量(也許是因爲你需要做不同的東西給他們已經)有更好的方法... – Alnitak

+0

@Felix你的鏈接是指傳遞一個字符串,並讓jquery引擎分離查詢,我有兩個(或更多)強類型的對象。 – maxp

+0

@maxp:嗯,它不一定清楚你想要/必須選擇元素。 –

回答

9

.add()應該做的(前提是你已經填充txtAtxtB,並希望重用這些選擇):

txtA.add(txtB).click(function() { 
    alert('hello'); 
}); 

如果提供的jQuery代表了一組DOM元素中, .add()方法從這些元素的聯合和傳入該方法的元素構造一個新的jQuery對象。 .add()的參數幾乎可以接受任何$()接受的東西,包括jQuery選擇器表達式,對DOM元素的引用或HTML片段。

+3

+1表示唯一正確的答案,適用於現有的基於選擇器的變量。 – Alnitak

+0

好點@Alnitak,我也是+1! –

0

你可以這樣做:

$("#txtA, #txtB").click(function() { alert('hello'); }); 

同樣作爲一個CSS選擇器,酷吧! :-)

+0

不,我有兩個強類型的集合'#txtA'和'#txtB'都只是例子。 – maxp

+0

不用擔心@maxp我錯了。您可能希望更新您的問題,因爲明確需要強類型集合,因爲有幾個人誤解了它。 –

2
$('#txtA, #txtB').click(function() { alert('hello'); }); 

可以爲你工作

+0

嗨@Pranay Rana,恐怕不行,它會嘗試在'#txtB'的上下文中選擇'#txtA'http://api.jquery.com/jQuery/我相信'#txtA ','#txtB'需要放在一個字符串'#txtA,#txtB'中。如我錯了請糾正我。 –

+2

@Alex Key - 您的信息可以查看:http://api.jquery.com/multiple-selector/ –

+0

Hi @Pranay Rana現在我很困惑...有人只是編輯你的答案?一秒鐘之前它讀取$('#txtA','#txtB'),即2個參數不是$('#txtA,#txtB')(1個參數)。無論是那個還是我瘋了:-)我已經取消了-1。 –

1

這裏是我做了什麼:

$() 
    .add(elementOne) 
    .add(elementTwo) 
    .add(elementThree) 
    .click(function() { 
     alert('hello'); 
    });