2015-04-24 30 views
21

select2 Sayfanın tümü, aynı sınıf adına sahip olan bir grup jquery öğesine uygulamak istiyorum ancak select2() üzerinde zaten bir select2() bulunan bir öğeyi seçiyorsam benziyor gibi görünüyor. yukarı.Bir öğenin zaten ona uygulanmış jquery select2 olup olmadığını kontrol etmenin bir yolu var mı?

$('.MyDripdowns').each(function (i, obj) { 
    if (!$(obj).HasSelect2Initiatized) 
    { 
     $(obj).select2({ width: "455px" }); 
    } 
}); 

Böyle bir şey var mıdır: burada

$('.MyDropdowns').each(function (i, obj) { 
    $(obj).select2({ width: "455px" }); 
}); 

yüzden böyle bir şey istiyorum benim kodudur?

+0

Eh o takdirde görünür:' görünmüyor – SmokeyPHP

+0

çok olarak aptal kanıt ($ (obj) (alt sının "görünür")) Ne öğe başka sebeplerden dolayı gizlenmişse? – leora

+0

Neden 'select2() 'iki kez çağırırsınız? – zed

cevap

49

eleman varsa kontrol edebilirsiniz select2 nitelik @ Fr0zenFyr kullanabilirsiniz v4.0 için yaptığı yorumunda söylediği gibi

$('.MyDripdowns').each(function (i, obj) { 
    if (!$(obj).data('select2')) 
    { 
     $(obj).select2({ width: "455px" }); 
    } 
}); 

DÜZENLEME

:

if (!$(obj).hasClass("select2-hidden-accessible"))

+0

Bu seçenek, postback'lerden sonra hala seçimlerimi çarpar:/ – ErTR

+0

Geri bildirimlerle ne demek istiyorsunuz? – semirturgay

+0

Sunucu tarafı işlemleri, özellikle UpdatePanel ile kısmi olanları. – ErTR

0

neredeyse doğrudur.
Ancak, dinamik olarak öğeleri aynı sayfaya eklediğimizde ve yeni oluşturulmuş öğeye seçim 2'yi uygularken sorun yaratır.
Bu sırada seçici sadece sınıf değil, aynı zamanda giriş tipi ile belirtilmelidir. PFB referans kodu. o üzerinde deniyor elementi gizler gibi `deneyebilirsiniz böylece

$('inputp[type="text"].MyDripdowns').each(curr_idx, curr_elem){ 
    //Check if select 2 is already applied or not 
    if($(curr_elem).hasClass('.select2-offscreen')){ 
     //Select 2 is already applied to this element 
    } 
    else{ 
     //Apply Select 2 to this element 
    } 
} 
İlgili konular