在我的项目中,我使用ajax从DB获取html内容,这些内容将显示在id为timeTagDiv的div中的web中。
如果我的名字是约翰,那么它应该出现:
NULL
如果我的名字是雪,它应该出现:
17:05:31 John translatetomaintanceGroup
letMnGrpmakeit
17:05:53 snow acceptSheet
17:06:04 snow translatetoleadGrp
leadercheckit
这是我的ajax代码:
17:05:31 John translatetomaintanceGroup
letMnGrpmakeit
17:05:53 snow acceptSheet
17:06:04 snow translatetoleadGrp
leadercheckit
以下是来自DB的data.stPrc的内容:
var stChr="John";
var stTrnStr="translateto";
$.ajax({
......
success:function(data)
{
var $myHtml = $(data.stPrc);
$myHtml.find("label").filter(function(){
return $(this).text()===stChr;
}).parent().attr("class", "rightd");
//$myHtml.find('div:contains('+stChr+' '+stTrnStr+')').next().attr('class','rightd');
$('#timeTagDiv').html($myHtml);
}
});
当label的上下文为John时,parent div的属性类更改为rightd。以下是成功运行的代码:
<div class="leftd">
<label>17:05:31</label>
<label>John</label>
<label> translateto</label>
<label>maintanceGroup</label>
</div>
<div class="leftd">
<div class="speech left" >letMnGrpmakeit</div>
</div>
<div class="leftd"><label>17:05:53</label>
<label>snow</label>
<label> acceptSheet</label>
</div>
<div class="leftd">
<label>17:06:04</label>
<label>snow</label>
<label> translateto</label>
<label>leadGrp</label>
</div>
<div class="leftd">
<div class="speech left" >leadercheckit</div>
</div>
然后,letMnGrpmakeit的内容属于John应该在右侧。所以接下来的两个div类应该设置为class =“rightd”和class =“speech right”。
在我的例子中,之前:
$myHtml.find("label").filter(function(){
return $(this).text()===stChr;
}).parent().attr("class", "rightd");
替换后:
<div class="leftd">
<div class="speech left" >letMnGrpmakeit</div>
</div>
我用:
<div class="rightd">
<div class="speech right" >letMnGrpmakeit</div>
</div>
但不幸的是,他们都失败了。
我尝试了一个条件:
$myHtml.find('div:contains('+stChr+' '+stTrnStr+')').next().attr('class','rightd');
$myHtml.find('div:contains('+stChr+' '+stTrnStr+')').next().next().attr('class','speech right');
它有效,但看起来像是:
$myHtml.find('label:contains('+stTrnStr+')').parent().next().attr('class','rightd');
我对此一无所知。改变两个div类的关键是两个条件。
谁能帮帮我?
答案 0 :(得分:0)
由于措辞和语法,我不确定我是否理解正确,但我建议改用addClass('className')和removeClass('className')。这样,如果您的元素有多个类,它将只删除所需的类。通过使用.attr('class', 'className')
,您将替换所有内容。如果您想添加多个类,请使用.addClass('class-1 class-2')
答案 1 :(得分:0)
使用这些:
$myHtml.find('label:contains('+stChr+')').next('label:contains('+stTrnStr+')').parent().next().attr('class','rightd');
$myHtml.find('label:contains('+stChr+')').next('label:contains('+stTrnStr+')').parent().next().children("div").eq(0).attr('class','speech right');