jQuery / javascript添加类在IE 8,9上不起作用

时间:2013-01-04 15:08:28

标签: javascript jquery internet-explorer-8 internet-explorer-9 addclass

我有这样的div:

<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句柄函数中。

“highlight-stuff”类只是添加背景颜色。

我尝试过各种各样的方法,从带有document.getElementById()。className的javascript到jQuery element.attr(“class”,“stuff”)等等。所有工作都适用于各种浏览器,但IE 8和9不起作用。背景没有改变。

请帮助和谢谢,我真的很感激。如果您需要更多代码,请告诉我。

有些人解释说:id是唯一的,因此只有一个元素具有相同的id。 $('#boss-stuff')有一个$('#id')列表。 $('#id')是一个li元素,有div子(ren)。我想为div类添加背景颜色。

3 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分:0)

它在其他浏览器中运行而不是IE的事实听起来像是在DOM Ready事件中不包含您的代码。我记得刚才有类似的问题。

您可以尝试(如果您的代码不在DOM ready事件中)

<强> 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>

答案 2 :(得分: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;

}