2012-05-22 14 views
5

Bir sayfadan html almam ve ana web sayfasına eklememi gerektiren bir proje üzerinde çalışıyorum. Tamamen Chrome ve Firefox'ta çalışıyor, ancak IE 9'da başarısız oluyor. İşte kullandığım kodun kesilmesi. Enjekte edilen IE9 Sorun: Dinamik olarak (innerHTML aracılığıyla) seçenek düğmeleri ve onay kutuları çalışmıyor

if (!element.data('cache')) { 

     $('#contentHolder').html('<img src="ajax_preloader.gif" width="64" height="64" class="preloader" />'); 

     $.get(element.data('page'), function (msg) { 
     $('#contentHolder').html(msg); 

     /* After page was received, add it to the cache for the current hyperlink: */ 
      element.data('cache', msg); 
      setTimeout("checkonbox()", 100); 
     }); 
    } 
    else { 
     $('#contentHolder').html(element.data('cache')); 
     setTimeout("checkonbox()", 100); 
    } 

HTML

<table style="width:400px; height: 388px; text-align: left;" align="left"> 
<tr> 
<td><input id="Checkbox0" type="checkbox" onclick="changebuttons();" checked="true"> 
Exclusive.</input></td> 
</tr> 
</table> 

Artı biraz daha seçenek düğmeleri olduğunu.

Her şey mükemmel görünüyor, ancak onay kutusunu veya seçenek düğmelerini tıklayamıyorum.

+0

changebuttons() işleviniz ne yapar? Bu sorunun en olası sebebi olarak görünüyor. Kontrol etmek için başka bir şey jquery sürümüdür - IE9 ve jquery eski sürümleri ile bazı hatalar olmuştur. – FluffyKitten

+0

Yan Not - Codeden sonra hiçbir şey yapmadığınız için, changebuttons() işlevini bir ';' ile sonlandırmanız gerekmez. sadece bir ipucu, ciddi bir şey yok. – Ohgodwhy

+0

jquery 1.7.2 kullanıyorum. Ayrıca onclick etkinliğinin çalıştığını daha yeni öğrendim; onay kutusu değişmez. Changebuttons işlevinin üst kısmına aşağıdakileri dahil ettik: if (navigator.appName == 'Microsoft Internet Explorer') { document.getElementById ('Checkbox0'). Checked = 1 - document.getElementById ('Checkbox0').kontrol; } 've mükemmel çalışıyor. – Urza

cevap

0

Sorunuzdaki kodun tamamını göremiyorum. Ama başlatıcısı içinde kod koymak değil varsayarak ediyorum: Bu unsurlarıyla bağlantılı olayları başlatmak için tarayıcı yardımcı olacaktır

$(function() { 
     // your jQuery code here. 
    }); 

. Bunu deneyin ve herhangi bir değişiklik olup olmadığını kontrol edin. Javascript üzerinde herhangi bir hata olup olmadığını da ortadan kaldırmaya çalışın. Kullanılabilir tarayıcıyla hata ayıklamaya çalışın. Şimdiye kadar karşılaştığım en iyi javascript hata ayıklayıcısı, bir firefox addon olan FireBug'dur.

0

Hiç böyle yazılmış bir giriş etiketi görmedim. Henüz sabah kahveleri yedim, ama eminim ki, kendiliğinden kapanması gerekiyor, bu durumda IE neyin var olduğunu görmek için hiç şaşırmadım.

Sanırım fikir "Ayrıcalığı" yapmaktı. Eğer giriş etrafında bir etiket etiketi istediğiniz bu durumda etiket tıklanabilir, böyle bir şey:

<label for="Checkbox0"><input id="Checkbox0" type="checkbox" onclick="changebuttons();" checked="true" />Exclusive.</label> 

bir koşuşturma ver. Dinamik olarak dom'a eklenen herhangi bir şey, sayfaya yüklendikten sonra ona bağlı eylemlere sahip olmak zorundadır.

+0

alternatif olarak etiket etiketinde 'for' özniteliğini belirtmek mümkündür, bu nedenle – vittore

+0

numaralı etikete girdiniz. Bu kodda gereksizdir. Başarısız ... Knew O kafein olmalıydı. –

0

Kodun AJAX ile bırakılması koşturmayacaktır. Fonksiyonunuzda bunu

deneyin:

$.get(element.data('page'), function (msg) { 
     $('#contentHolder').html(msg); 

     //this will bind your input field via javascript 
     $('input#Checkbox0').click(changebuttons); 

     /* After page was received, add it to the cache for the current hyperlink: */ 
      element.data('cache', msg); 
      setTimeout("checkonbox()", 100); 
}); 
0

işe yarayacak

$(element) 

ile

element 

değiştirin.

İlgili konular