Kafamı anlamaya çalışan bir duvarın içine koştum. Aşağıdaki HTML vücudu atın:jQuery neden belirli HTML'yi gizleyemiyor?
<body>
<div id="project">
<h1>Hi</h1>
<h2>Hello</h2>
</div>
</body>
Ve aşağıdaki jQuery kodu:
$(function(){
var h = $('#project').html();
$('#project').remove();
$(h).hide().appendTo('body');
alert("Created HTML, hide, and appended!");
});
$(h).hide()
kısmı jQuery Safari 4 ve Firefox 3.5 bir özel durum neden olur.
Safari:TypeError: Result of expression 'this[a].style' [undefined] is not an object.
Firefox: uncaught exception: [Exception... "Could not convert JavaScript argument arg 0" nsresult: ...]
Sana HTML <h1>
veya <h2>
kaldırırsanız HTML (iki başlık sadece birini içeren değiştirmek, senaryo başarıyla çalışır. Neden?
kendiniz denemek için bu bkz http://jsbin.com/avisi/edit
Düzenleme: Aslında DOM'dan kaldırmayı ve öğeyi kaldırmaya çalışmıyorum ve HTML'yi kopyalayarak tekrar ekleyemiyorum. Bu, daha karmaşık bir kodda bulunduğum bir hata için bir test vakasıdır ve bu hatanın neden oluştuğunu anlamaya çalışıyorum. Eğer burada gösterilen şeyi gerçekleştirmek isteseydim, $('#project').remove().children().appendTo('body')
Bunun, söz konusu düğümleri kaldırmak ve yeniden eklemek için daha temiz bir yol olduğunu kabul ediyorum. Anlamaya çalıştığım şey (en azından Firefox 3.5 ve Safari 4'ün kopyasında), yukarıdaki kodun bir hataya neden olmasıdır. – Ryan
Nedeni buldum ve cevabımı güncelledim. –
Justin, bunu araştırdığın için teşekkürler. Eminim ki, sunucudan alınan bir HTML parçasını gizlemeye ve yerleştirmeye çalışan ilk problemimi çözmek için kullanabileceğime eminim (bu yüzden '.remove()' ... '.append()' değil bir seçenek - kaldırılacak hiçbir şey yok). – Ryan