2012-09-20 26 views
10

Bunu işe yarayacak gibi görünmüyor ...jQuery kullanarak veri öznitelikleri kaldırılıyor

Bazı bağlantıları gizleyen bir sayfam var. DOM yüklendiğinde, bu öğelerden bazılarını değiştirmek için jQuery kullanıyorum. Bu yüzden böyle bir veri özelliğini kullanarak tahrik edilmektedir: planlandığı gibi

$.each($(".d_btn"), function() { 
    var btn = $(this).data('usr'); 
    if (btn == '48'){  
    $(this).children('.hidden_button').toggle(); 
    } 

serisi tamamen eserler üzerinde:

<div class="d_btn" data-usr='48'> 
    <div class="hidden_button"> 

Sonra ben kodu var. Sorun, if deyimi değerlendirildikten sonra .d_btn sınıfından data-usr'i kaldırmaya çalışıyorum. Ben aşağıdaki denedim ve hiçbir şey inşaat (yani sayfa yüklendikten sonra, kaynak hala veri usr niteliğini gösterir: Şimdi birkaç saat boyunca bu çalışıyoruz

$(this).removeAttr("data-usr"); 

$(this).removeData("usr"); 

ve. yok #! Yardım büyük takdir!

Ben boş bir dizeye veri niteliğinin kurulması büyük öneriler denedim ama hala istenilen sonucu elde edemiyorum

GÜNCELLEME.

To biraz daha açıkla, özniteliği kaldırmaya çalışmamın sebebi, ajax yanıtı sayfaya başka bir öğe eklediğinde, önceden eklenen öğeler zaten gösterilen veya gizlenmiş olan düğmeye sahip olacaktı. AJAX yanıtı üzerine, DOM yüklendikten sonra aynı işlevi arıyorum. bir şey AJAX eklendiğinde

Halen, tüm düğmeleri değiştirir

(tersi gizli ve edildi olanları gösteren.) Ahh ...

Ben de yaklaşıma alternatifleri denemek için tamamen hazırım . Teşekkürler!

GÜNCELLEME

Neyse yerine .toggle() ait)

Eh, ampul sadece parladı ve ben (sadece .show kullanarak yapmak istediğim şeyi yapmaya muktedir değilim, Bu soruya bir cevap bulmak isterim çünkü sayfa bir şey eklendiğinde yüzlerce maddeyi potansiyel olarak kontrol ediyor olabilir - bu durum korkunç derecede verimsiz (bilgisayar için bile hahaha gibi görünüyor)

cevap

7

değiştirme DOM kaynağını etkilemez. Inspector/Developer Tools ile görüntüleyebileceğiniz DOM'yi etkiler. Sağ tıklama => Kaynağı Görüntüle, sayfanın orjinal kaynağını verecektir, JavaScript tarafından değiştirilen gerçek kaynak değildir. Boş bir dizeye

+1

1 nokta şudur .. ajax isteği ile birlikte oluyor bütün mantıkla kodunuzu güncelleyebilirsiniz jsfiddle.net/VVbFG – undefined

+0

Teşekkürler - bu gerçekten yararlı! Gönderiyi ek bilgilerle güncelledim. –

5

Neden ayarlamıyorsunuz? rastgele bir değere veya boş varlığa değer removeAttr çalışmıyor mümkün yerine eğer ..

$(this).attr("data-usr" , ''); 

$(this).prop("data-usr" , ''); 
+0

teşekkürler - biraz daha açıklama ... –

+0

Ama veri usr boşken, bunun girmeyecektir tahmin ile benim orijinal yayını güncelledik döngü sağ .. Yani o belirli div düğmesi durumunun ise değiştirilmeyecek .. Eğer yanlış olduğunu düşünüyorum eğer bir keman inşa edebilir misin? –

+0

Tam da düşündüğüm şey buydu ama böyle çalışmıyor. Eğer –

1

Seti it:

$(this).attr("data-usr", ""); 

Ben Kolink geçen ikinci Ne: DOM, değil kaynağını kontrol edin. (Chrome: Ctrl + ÜstKrktr + i). Diğerleri belirttiği gibi,

+0

Teşekkür - Biraz daha fazla açıklama ile benim orijinal yayını güncelledik ... –

1

. Kaynağın kontrol edilmesi sadece web sayfası için orijinal düzenlenmemiş kaynağı gösterir. Yapmanız gereken, geliştirici araçlarını kullanarak DOM'ı kontrol etmektir.

Ben jsfiddle here Chrome'un müfettiş her şeyi kontrol sadece ettik ve nitelik kesinlikle verilerin yanı sıra kaldırılıyor.

+0

Teşekkür - O zaman belki benim akıl ile ilgili bir sorun var? Ne yazık ki DOM kontrol etmek (Kundakçı üzerinde denenmiş ve herhangi bir şey üzerinden yazı-tura gelemedi) sayfanın içinde eleman sağ tıklamak gerekir Firefox'ta ... –

+1

nasıl ve seçmeyin "kontrol Firebug ile Öğe ". Ardından, seçtiğiniz öğede yerelleştirilmiş sayfanın işaretini görürsünüz. –

+0

Güzel -^Teşekkürler dostum^Az önce kontrol ettim ve haklısın - veri özelliği kaldırıldı. Bu, benim mantığımla ilgili bir problem olduğu sonucumu doğruladı. Soru şu ki, AJAX ile yeni bir öğe eklendiğinde ve aynı işlevi çağırdığımda, döngü tüm öğeler üzerinde çalışıyor ve her şey değiştiriliyor mu? –

İlgili konular