父()div的div

时间:2012-07-27 02:16:39

标签: javascript jquery parent

HTML:
                            

<ul id="column">
<li id="widget8">
    <div class="testhub"></div>
</li>
</ul>

JS:

if ($("#widget8").parent("#dock")) {
   $(".testhub").html("<p>dock</p>");
}
else {
    $(".testhub").html("<p>not dock</p>");
}​

CSS:

#dock {
    width: 90%;
    height: 100px;
    background-color: blue;
}
#column {
    width: 90%;
    height: 100px;
    background-color: red;
}
#widget8 {
    width: 90%;
    height: 50px;
    background-color: yellow;
}
.testhub {
    width 50%;
    height: 25px;
    background-color: black;
    color: white;
}​

http://jsfiddle.net/zVx8s/1/

我要做的就是 li li ,如果它位于 #dock ,那么请写一些内容testhub。但似乎没有用,请检查jsfiddle。

我认为我错误地使用了父母。

5 个答案:

答案 0 :(得分:2)

试试这个:工作演示 http://jsfiddle.net/268mh/

请注意,您在DOM中永远不会拥有相同的ID。所以我已经让widget8代课了!

Rest希望演示有助于事业! :)

<强>码

$(".widget8").each(function() {
    if ($(this).parent().prop("id") == "dock") {
        $(this).find(".testhub").html("<p>dock</p>");

    }
    else {
        $(this).find(".testhub").html("<p>not dock</p>");
    }
});​

<强> HTML

<ul id="dock">
<li class="widget8">
    <div class="testhub"></div>
</li>
</ul>

<ul id="column">
<li class="widget8">
    <div class="testhub"></div>
</li>
</ul>
​

答案 1 :(得分:2)

第一个问题是,在你的小提琴上你使用2 ulid。请改用班级。

你必须循环你的li并检查父母的长度。

$(".widget8").each(function) {
    var $element = $(this).parent("#dock");
    if($element.length > 0) {
        var message = 'dock';
    }
    else {
        var message = 'not dock';
    }
    $($element, this).html('<p>' + message + '</p>');
});

​

demo

因此,如果您只是想测试是否有ID,那么必须使用正确的选择器

$('#dock .widget8').html('<p>dock</p>');

上面的选择器获取位于#dock内且具有类.widget8的元素。

demo

答案 2 :(得分:1)

您忘了length检查它是否确实存在。

if ($("#widget8").parent("#dock").length)
                                 ---^---

答案 3 :(得分:1)

问题是这个表达式:

$("#widget8").parent("#dock")

评估为jQuery对象,并且对象在JavaScript中始终为“true”值。 (始终。偶数new Boolean(false)是“真实”值。)

要查看上述jQuery对象是否包含任何实际元素,您可以使用the .length property

if ($("#widget8").parent("#dock").length) {

(但我同意杰夫认为写parent().is("#dock")更清楚:得到父母,检查它是否为#dock,而不是获得父母 - 如果是 - #dock,看它是否存在。)

答案 4 :(得分:0)

如果您正在尝试测试父id,可以使用此功能:

if ($("#widget8").parent().is("#dock")) {
    $(".testhub").html("<p>dock</p>");
}
else {
    $(".testhub").html("<p>not dock</p>");
}​