2012-10-03 18 views
6

Bir düğmeyi tıklattığında, seçili seçeneği tıklatılan düğmeye karşılık gelen bir seçenekle değiştirmek istiyorum. Bu Orada bazı jQuery var, ben bugüne kadar ne jsfiddleSeçili seçeneği değiştirme düğmesi üzerinde tıklayın

$('#btnCityAuckland').click(function(){ 
    $('#City').val('A'); 
}) 

olmakla haklı olmak açıklarında muhtemelen mil kadar basit olamaz olarak.

cevap

14
$('#btnAuckland').click(function(){ 
    $('#City').val('A').trigger('change'); 
})​ 

Görünüşe göre değeri ayarladıktan sonra .trigger() yöntemini çağırabilirsiniz.

Demo: http://jsfiddle.net/8RUBj/11/

DÜZENLEME
Eğer data değeri ve sınıfları belirlemek için özelliklerini kullanmasına ve sonra tek seferde tüm düğmeleri yapabilir Ayrıca, daha iyi olur.

$('.select-change').click(function(){ 
    $('#City').val($(this).data('val')).trigger('change'); 
})​ 

Demo v2: http://jsfiddle.net/8RUBj/15/

+0

Tam olarak ne peşimdeydim. Daha önce kullanılan .trigger() görmedim. Yeni bir şey öğrendim :) Teşekkürler yığınları! – Jamesil

+0

@Jamesil - güncellemeyi kontrol edin. Daha çok yardımcı oluyor. – ahren

3

Kişisel kod $('#btnCityAuckland') mistyped sadece, gerçekten öyle, haklı: Çalışma

$('#btnAuckland') 

demo

Ayrıca kimlikleri butonuna dayalı seçeneği tıklanan seçerek yerine hardcoding otomatikleştirebildiğiniz Bunu şöyle:

$('div > a').click(function(){ //click handler for all city buttons 
    $("#City option:contains('"+$(this).text()+"')").attr("selected",true); 
    $("#City").selectmenu('refresh', true); //Refresh to show name on select 
})​ 

demo

Çalışma
+0

evet değer değişiyor, ancak görünür bir değişiklik değil. (seçim güncellenmez ve elle tetiklenmesi gerekir. Teşekkürler jQuery Mobile.) – ahren

+0

Teşekkürler Nelson, Ve tamamen katılıyorum ahren. – Jamesil

+0

@Jamesil Seçtiğiniz yenileme çağrısını ekledim, böylece seçim değişikliği seçiyor. Son kodumda görebilirsiniz, güncellenmiş cevabımı görün. – Nelson

1

onu olduğu gibi çalışacak jQuery Mobile kodunuzu kullanarak olmasaydı. aşağıdaki gibi jQuery Mobile ile bunu üzerine .selectmenu("refresh") arayarak sözde seçme yenileme yapabilir:

$('div[data-role="controlgroup"] a').click(function(){ 
     $('#City').val($(this).text().charAt(0)).selectmenu("refresh"); 
}); 

Demo: Her buton için ayrı bir tıklama işleyicisi atamak gerekmez http://jsfiddle.net/8RUBj/18/

Not: gösterim amaçlı olarak, kodu html değiştirmeden çalışacak şekilde daha genel bir şekilde hazırladığımı gösterdim, ancak her biriyle hangi değerin ilişkili olduğunu belirtmek için data- özniteliklerini veya bir şeyleri ekleyebilirsiniz.

More information about jQuery Mobile select methods.

+0

+1 - İlk char ile select değeri arasındaki korelasyonu fark etmedi! – ahren

+0

Teşekkürler @ahren. Açıkçası, ilk harfli şey, eğer seçimlerde farklı değerler olması gerektiğinden, aynı harfle başlayan ek şehirler olsaydı işe yaramazdı, ama yukarıda belirttiğim gibi, bu sadece kodu yapmak için tek bir yolun gösterilmesiydi. daha jenerik ... – nnnnnn

İlgili konular