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;
}
我要做的就是 li li ,如果它位于 #dock ,那么请写一些内容testhub。但似乎没有用,请检查jsfiddle。
我认为我错误地使用了父母。
答案 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 ul
个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
内且具有类.widget8
的元素。
答案 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>");
}