<c:forEach items="${list}" var="item">
<div class="block" id="${item.id}" data-num="${item.itemRead}">
<a id="${item.id}"
href="javascript:showFeedItem('${item.id}','${item.itemRead}');">
</div>
</c:forEach>
为什么在创建新数据属性data-num
时有未定义的属性名称data-num?
jQuery的:
$(document).ready(function(){
$('.block').each(function(i, obj) {
if($(this).attr("data-num")=="0"){
//need to style a inside this
$(this).css("background-color","black");
}
});
});
如何定位a
,如下所示:
$('.block[id="' + id + '"] a').css('color', 'black');
但使用$(this).css("background-color","black");
?
答案 0 :(得分:2)
将this
作为上下文传递给jQuery选择器
$(document).ready(function () {
$('.block').each(function (i, obj) {
if ($(this).attr("data-num") == "0") {
//need to style a inside this
$('a', this).css("background-color", "black");
//or $(this).find('a').css("background-color", "black");
}
});
});
您也可以将其缩短为
$(document).ready(function () {
$('.block[data-num="0"] a').css("background-color", "black");
});
答案 1 :(得分:0)
如果你想抓住this
的直接后代(就像你的代码中那样),你可以使用.children()方法。
$(this).children(a).css("background-color","black");
答案 2 :(得分:0)
我想你需要改变这个:
<c:forEach items="${list}" var="item">
<div class="block" id="${item.id}" data-num="${item.itemRead}">
<a href="javascript:showFeedItem('${item.id}','${item.itemRead}');">
</div>
</c:forEach>
从锚中删除了id="${item.id}"
。在我看来,您在单个页面中向不同的项目添加相同的ID,但每个元素必须是唯一的。
现在在js中你必须使用.find()
来设置样式并设置样式:
$(document).ready(function(){
$('.block').each(function(i, obj) {
if($(this).attr("data-num")=="0"){ // or if($(this).data("num")=="0"){
$(this).find('a').css("background","black");
}
});
});