如何用这个来标记内部div?

时间:2015-06-11 08:04:04

标签: javascript jquery css jsp loops

<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");

3 个答案:

答案 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");
        }
    });
});