Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery/javascript添加类在IE 8,9上不起作用_Javascript_Jquery_Internet Explorer 8_Internet Explorer 9_Addclass - Fatal编程技术网

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

jQuery/javascript添加类在IE 8,9上不起作用,javascript,jquery,internet-explorer-8,internet-explorer-9,addclass,Javascript,Jquery,Internet Explorer 8,Internet Explorer 9,Addclass,我有一个这样的部门: <div onclick="highlightFunction(<?php echo $id?>);"> 此代码位于onlick句柄函数中 “highlight stuff”类只是添加了背景色 我尝试过各种方法,从带有document.getElementById().className的javascript到jQuery element.attr(“class”,“stuff”)等。所有这些方法都适用于各种浏览器,但IE 8和9不起作用。背景没有

我有一个这样的部门:

<div onclick="highlightFunction(<?php echo $id?>);">
此代码位于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类添加背景色。

试试这个

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

它可以在其他浏览器中工作,而不是
IE
,这听起来有点傻,好像没有将您的代码包含在
DOM Ready
事件中。我记得不久前有过类似的问题

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

HTML

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

也许您的HTML层次结构太复杂了?我尝试了这一个,addClass适用于所有浏览器

HTML


}

什么是杰尔?您没有发布其值的来源。抱歉,这是一个打字错误。我已经解决了这个问题。嗯,
.addClass()
.removeClass()
肯定在IE中工作。你确定那个类的CSS不是真正的问题吗?CSS很长,如果需要澄清问题,我会尝试以可读的方式减少它。这段代码在Chrome和Firefox上都可以运行,但是CSS是否仍有可能出现错误,导致IE 8和9无法正常工作?你说addClass和removeClass无法正常工作,但你还没有证明这一点。我们不知道是否未能添加该类,或者是否没有应用这些样式。我试过了,但没有成功,因为jStuff是一个DOM元素,这会导致“hasnotmethodAddClass”错误,因为我认为addClass是jQuery的一个方法。因此,使用此行jStuff=$(stuff)将stuff转换为jQuery对象的原因可能更好,应该是$('#'+id+'div:first child')?或
.find('div').eq(0)
。@Kevin是的,这确实使代码看起来更好,但仍然不能解决我在ie 8和9I中遇到的问题。我已经更新了这个问题。正如我在问题中所说的,我将js代码放在onclick handle函数中。那么,我如何修复它,使其成为DOM就绪事件?抱歉,如果我问了一个愚蠢的问题。这听起来可能会导致问题,请从您的
onclick
中删除代码,然后将答案中的代码复制粘贴到您的页面中,并尝试一下。是的,这很有效。也许我的问题和JustAnil说的DOM就绪事件有关?我注意到在您的测试中,您正在使用按钮单击来触发事件。我可以在div本身上触发onclick事件吗?然而,我的div是一个div列表,它是动态的,所以我不知道我可以让它像你的代码一样。我在所有div上设置一个固定的类名,它看起来像$(“.fixedClassName”)。单击(function(){}),这样可以吗?使用$(“.fixedClassName”).live('click',function(){});请注意,如果希望只触发选定的div,请使用.live函数。@PiscesLeo此解决方案对您有效吗?如果是的话,你能把它标记为正确答案吗?
<div onclick="highlightFunction(<?php echo $id?>);">
<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>
<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" />
   <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>
.highlight-stuff {
color: #ff0000;