jQuery/javascript添加类不能在ie8、ie9上工作

jQuery/javascript adding class does not work on IE 8,9

本文关键字:ie8 ie9 工作 不能 javascript 添加 jQuery      更新时间:2023-09-26

我有一个这样的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");
 }

这段代码位于一个onclick句柄函数中。

highlight-stuff类只是添加了一个背景色。

我尝试了各种方法,从javascript与document.getElementById()。className改为jQuery element.attr("class","stuff")等。所有这些都可以在各种浏览器上工作,但是ie8和ie9不起作用。背景没有改变。

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

一些解释:id是唯一的,因此将不会有超过一个具有相同id的元素。$('#boss-stuff')有一个$('#id')列表。$('#id')是一个li元素,有div子元素(ren)。我想给div类添加背景色

try this

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

它在其他浏览器而不是IE中工作的事实听起来像一些愚蠢的事情,就像不包括您的代码在DOM Ready事件中。我记得前段时间也遇到过类似的问题。

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

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

也许你的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;

}