0

工作,我有這樣一個div:的jQuery/JavaScript的添加類不上IE 8,9

<div onclick="highlightFunction(<?php echo $id?>);"> 

我有以下的js代碼:

function highlightFunction(id) { 
    var id = "stuff" + stuff_id; 
    $('#boss-stuff').find('div').removeClass('highlight-stuff'); 
    var stuff = $('#' + id).find('div')[0]; 
    var jStuff = $(stuff); 
    jStuff.addClass("highlight-stuff"); 
} 

此代碼是內部的地方onlick手柄功能。

「高亮東西」類只是添加背景顏色。我已經嘗試過各種方式,從與document.getElementById().className到jQuery element.attr(「類」,「東西」)的JavaScript。所有與各種瀏覽器,但IE 8和9不工作。背景沒有改變。

請幫助和謝謝,我真的很感激它。如果您需要更多代碼,請告訴我。

一些解釋:id是唯一的,因此不會有超過一個元素具有相同的id。 $('#boss-stuff')有一個$('#id')的列表。 $('#id')是一個li元素,有div子(ren)。我想爲div類添加背景色。

+5

什麼是'jEle'?你沒有發佈從哪裏獲得它的價值。 – Pointy

+0

抱歉,這是一個錯字。我已經解決了這個問題。 –

+1

那麼'.addClass()'和'.removeClass()'絕對可以在IE中使用。你確定那個類的CSS不是真正的問題嗎? – Pointy

回答

0

試試這個

var jStuff = $('#' + id).find('div')[0]; 
jStuff.addClass("highlight-stuff"); 
+0

我試過了,它不起作用,因爲jStuff是一個DOM元素,它會導致「has no method addClass」錯誤,因爲addClass是我假設的jQuery的一種方法。因此,用這行jStuff = $(stuff) –

+0

可能更好的東西被轉換爲jQuery對象的原因可能是$('#'+ id +'div:first-child')? – smefju

+0

或'.find('div')。eq(0)'更精確。 –

0

它在其他瀏覽器的事實,而不是IE聽起來像它的一些愚蠢的像不包括DOM Ready事件中的代碼。我記得前一段時間有類似問題。

你可以嘗試(如果你的代碼是不是已經在DOM就緒事件中)

HTML

<div onclick="highlightFunction(<?php echo $id?>);"> 

的Javascript

<script type="text/javascript"> 
// This is really important.. make sure all jQuery is inside the DOM ready event 
$(function(){ 
    function highlightFunction(id) { 
     var id = "stuff" + stuff_id; 
     $('#boss-stuff').find('div').removeClass('highlight-stuff'); 
     var stuff = $('#' + id).find('div')[0]; 
     var jStuff = $(stuff); 
     jStuff.addClass("highlight-stuff"); 
    } 
}); 
</script> 
+0

我已更新問題。正如我在問題中所述,我把它放在一個onclick句柄函數中。那麼,如何修復它以使其成爲DOM ready事件?對不起,如果我問一個愚蠢的問題。 –

+0

這聽起來像是可以解決這個問題,從你的'onclick'中刪除代碼,並將我的代碼複製並粘貼到你的頁面中,然後試一試。 – Anil

0

也許你的HTML層次結構太複雜?我試過這個,並將addClass作品添加到所有瀏覽器中。

HTML

<div id="boss-stuff"> 
    <div id="stuffst123456"> 
     <div id=""class="">Div without class</div> 
     <div id="" class="highlight-stuff">Div With Class</div> 
     </div> 
    <div id="st123457">Other Div</div> 
</div> 
<input id="testBtn" type="button" value="Click Me" /> 

的JavaScript

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#testBtn").click(function() { 
      var id = "stuff" + "st123456"; 
      $('#boss-stuff').find('div').removeClass('highlight-stuff'); 
      var stuff = $('#' + id).find('div')[0]; 
      var jStuff = $(stuff); 
      jStuff.addClass("highlight-stuff"); 
     }); 
    }); 
</script> 

CSS

.highlight-stuff { 
color: #ff0000; 

}

+0

是的,這有效。也許我的問題與JustAnil說的DOM準備事件有關?我注意到,在你的測試中,你正在使用按鈕點擊來觸發事件。我可以在div上觸發onclick事件嗎?然而,我的div是一個div列表,它是動態的,所以我不知道我可以使它像你的代碼。如何在所有div上設置一個固定的類名,它將如下所示:$(「。fixedClassName」)。click(function(){}); ,這應該好嗎? –

+0

使用$(「。fixedClassName」)。live('click',function(){});請注意,如果您希望只有選定的div會被觸發,請使用.live函數。 –

+0

@PiscesLeo是否爲您解決了這個問題?如果這樣你能標記是正確的答案? – user1380540