好的抱歉,现在这是两个问题。
如何从Riversdale
遍历到Western Cape
和
如何访问status属性的值(我认为已经回答了)
但是现在选择正确的属性是一个小问题。
entry = $(this).closest('.expandListContentRow div:nth-child(1)').attr('id');
条目为我提供了正确的ID,但我想访问status
属性。
<div class="expandListItem highlight" id="b82e107" status="deactivated">Sandy Bay</div>
如何获取Status属性的值?
这可能会让您了解我想要遍历的列表
<div class="expandListContentRow contentCol2" id="28fa1d89" style="display: block;">
<div class="expandListItem addNewProv" id="SouthAfrica_button">ADD NEW PROVINCE</div>
<div class="expandListItem b82e107e highlight" id="b82e107e" status="deactivated">Western Cape</div>
<div class="expandListContent_sub1">
<div class="expandListContentRow_sub1 contentCol_sub1 SUB_b82e107e" id="b82e107e" style="display: block;">
<div class="expandListItem_sub1 addNewCity" id="Antalia_button">ADD NEW CITY</div>
<div class="expandListItem_sub1 highlight_sub" id="429973ea" status="deactivated">Riversdale</div>
<div class="expandListItem_sub1" id="b71e53aa" status="deactivated">Ashton</div>
<div class="expandListItem_sub1" id="a3fcad14" status="deactivated">Cape Town</div>
<div class="expandListItem_sub1" id="5dcbf222" status="deactivated">Somerset West</div>
</div>
</div>
</div>
因此,如果我想激活Riversdale
,我需要在此实例中激活父级Western Cape
。我之前显然已经走错了,所以你如何从Riversdale
到Western Cape
?
答案 0 :(得分:1)
您需要在.attr()
中传递属性名称才能获取值。您有一些元素的重复ID。这是错的。你也有不正确的选择器来定位所需的div。使用方法:
entry = $(this).closest('.expandListContent_sub1').prev().attr('status');
您应该注意,在HTML中使用非规范属性会导致页面无效。请改用data- *属性:
<强> DOM:强>
<div class="expandListItem highlight" id="b82e107" data-status="deactivated">Sandy Bay</div>
<强> JS:强>
entry = $(this).closest('.expandListContent_sub1').prev().data('status');
答案 1 :(得分:1)
您可以使用attr()
属性执行相同操作。
entry = $(this).closest('.expandListContentRow div:nth-child(1)').attr('id');
var status = $(this).closest('.expandListContentRow div:nth-child(1)').attr('status');
但是对于porper w3c验证,请使用html5数据属性。
<div class="expandListItem highlight" id="b82e107" data-status="deactivated">Sandy Bay</div>
$(this).closest('.expandListContentRow div:nth-child(1)').data('status');
答案 2 :(得分:1)
正如其他人所说,这应该有效
$('.expandListItem').attr('status');
但是由于没有得到理想的结果,
也是如此console.log($(this))
console.log($(this).closest('.expandListContentRow'))
console.log($(this).closest('.expandListContentRow div:nth-child(1)'))
检查问题所在。希望帮助