0

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が入っているulを取得し、#dockにある場合はtesthubに何かを書き込むことだけです。しかし、うまくいかないようです。jsfiddle を確認してください。

親の使い方が間違っていると思います。

4

5 に答える 5

2

これを試してください:作業デモ http://jsfiddle.net/268m/

DOM で同じ ID を持つことはできないことに注意してください。だから私はwidget8代わりにクラスにしました!

休息希望のデモが大義に役立ちます!:)

コード

$(".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>
​
于 2012-07-27T02:25:28.560 に答える
2

最初の問題は、フィドルulで同じ 2 s を使用することですid。代わりにクラスを使用してください。

をループして、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>');
});

​

デモ

したがって、 id があるかどうかをテストしたい場合は、正しいセレクターを使用するだけです。

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

上記のセレクターは、内部#dockにあり、 class を持つ要素を取得します.widget8

デモ

于 2012-07-27T02:32:16.347 に答える
1

length実際に存在するかどうかを確認するのを忘れていました。

if ($("#widget8").parent("#dock").length)
                                 ---^---
于 2012-07-27T02:22:42.187 に答える
1

問題は、次の式です。

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

は jQuery オブジェクトに評価され、オブジェクトは JavaScript では常に「真」の値です。( Always . Evennew Boolean(false)は「真の」値です。)

上記の jQuery オブジェクトに実際の要素が含まれているかどうかを確認するには、次.lengthプロパティを使用できます。

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

(しかし、私は、より明確に書くことがジェフに同意しますparent().is("#dock"):親を取得し、それが存在するかどうかを確認するの#dockではなく、親を取得し、#dockそれが存在するかどうかを確認します。)

于 2012-07-27T02:24:10.510 に答える
0

親をテストしようとしている場合はid、これを使用できます。

if ($("#widget8").parent().is("#dock")) {
    $(".testhub").html("<p>dock</p>");
}
else {
    $(".testhub").html("<p>not dock</p>");
}​
于 2012-07-27T02:21:37.900 に答える