2012-10-07 28 views
5

Olası Çoğalt:
Is there a way to make a DIV unselectable?JQuery veya CSS kullanarak MANY öğelerini nasıl seçilemez hale getirebilirim?

Oraya çok sayıda çözüm bir eleman için bu iş gördük. Ancak etiketler ve düğmeler içeren bir alanım var. Bu sadece bir öğe değil, DIV içinde her eleman.

İçinde DIV imkansız olan herhangi bir şeyi nasıl yapabilirim? DIVDIV üzerinde bir maske katmanı yapamayacağımı unutmayın. durumda bulunuyor

+1

Öyle mi $ (this) .each'i kullanmayı deneyin. (function() {// ne istediğinizi devre dışı bırakın}); –

+2

, ebeveynin seçilmez çalışmasını ayarlamaz mı? Bütün çocuklar dahil edilmelidir. Diğer bilge seçim seçici 'mydivclass *' – charlietfl

+0

Unutulmayan okumadan kalıtım devredilmiyor –

cevap

5
$(".yourdiv").children().css({userSelect: 'none'}); 

CSS user-select özelliğini kullanarak seçimini devre dışı bırakmak istiyor. Değilse, yukarıdaki diğer yöntemlere kolayca genelleştirilebilir.

yukarıda sadece .find() yöntemi kullanmak, tüm kökenini seçmek için, doğrudan çocukları seçer:

.yourdiv * { /*this selects all elements that are children of yourdiv*/ 
    /*user-select: none rules*/ 
} 

Veya:

$(".yourdiv").find("*").css({userSelect: 'none'}); 

Ayrıca bu kullanarak saf CSS yapabilirsiniz

.yourdiv > * { /*this selects all elements that are direct descendants of yourdiv*/ 
    /*user-select: none rules*/ 
} 
+0

Teşekkürler. Diğer özellikleri de yapmak için nasıl genişletebilirim: -webkit-user-select: none;/* Chrome/Safari */ -moz-user-select: yok;/* Firefox */ -ms-kullanıcı seç: yok;/* IE10 + */ -o-kullanıcı seç: yok; kullanıcı seç: yok; –

+0

'$ (". Yourdiv * ")' sadece tüm çocukları kapsamaz. – charlietfl

+0

@SamanthaJ jQuery'nin yeni sürümleri gerekirse önekleri otomatik olarak ekler. – Chris

1

tescilli user-select CSS varyasyonları inher vardır Onları destekleyen tüm tarayıcılarda itildi. Bu örneğe bakın:

http://jsfiddle.net/yD7bM/

Senin sorunun bu CSS özelliklerini, yani Opera ve IE < = 9. desteklemeyen tarayıcılar olduğu Happily Bunların ikisi de bir alternatif uygulamak: unselectable attribute. Ancak, miras alınmayan bu özelliktir.

En iyi çözüm, HTML'de ayırt edilemez olmasını istediğiniz (ör. Sunucu tarafı) her öğeye bir unselectable="on" özniteliği eklemektir. Ancak, bu bir seçenek değilse, a recursive function'u kullanarak JavaScript'i kullanarak bunu yapabilirsiniz.jQuery kullanıyorsanız

sınıf "unselectable" ve onun tüm soyu ile her elemana unselectable niteliğini eklemek için böyle bir şey yapabileceğini:

$(".unselectable").find("*").andSelf().attr("unselectable", "on"); 

Demo: http://jsbin.com/ulazic/2

+0

"Unselectable" özniteliği ile ilgili herhangi bir belgeye işaret edebilir misiniz? – Pavlo

+0

@Pavlo: Elbette. Bitti. –

+0

Uhh, tarayıcı desteği ne olacak? – Pavlo

İlgili konular