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;