2014-10-29 98 views
0

好吧,不好意思,但现在是n两层的问题。如何访问状态属性的值

如何遍历从RiversdaleWestern Cape

如何访问状态属性(我认为已经回答)值

但现在,选择正确的属性是一个小问题。

entry = $(this).closest('.expandListContentRow div:nth-child(1)').attr('id');

进入给了我正确的ID,但我想访问status属性。

<div class="expandListItem highlight" id="b82e107" status="deactivated">Sandy Bay</div>

如何获取状态属性的值?

这可能给你,我想遍历

<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在这种情况下。我以前明显遍历过,所以你如何从RiversdaleWestern Cape

回答

1

您需要在.attr()中传递属性名称以获取该值。你有一些元素的重复ID。这是错误的。您也有不正确的选择器来定位所需的div。使用:

entry = $(this).closest('.expandListContent_sub1').prev().attr('status'); 

您应该注意,在HTML中使用非spec规范的属性会导致您的页面无效。使用数据 - *属性来代替:

DOM:

<div class="expandListItem highlight" id="b82e107" data-status="deactivated">Sandy Bay</div> 

JS:

entry = $(this).closest('.expandListContent_sub1').prev().data('status'); 
+0

我试过了,它回推'undefined' – morne 2014-10-29 09:34:09

+0

@mornenel:在这里工作正常http: //jsfiddle.net/9brjp7c2/ – 2014-10-29 09:36:38

+0

mmm好吧,也许我没有在遍历后的正确位置。感谢您的帮助,我会使用这个,只需要确定我的遍历。 – morne 2014-10-29 09:43:15

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'); 
+0

mmm好的,也许我没有在遍历后的正确位置。感谢您的帮助,我会使用这个,只需要确定我的遍历。 – morne 2014-10-29 09:43:24

1

正如其他提到这应该工作

$('.expandListItem').attr('status'); 

但你没有得到想要的结果,所以做

console.log($(this)) 
console.log($(this).closest('.expandListContentRow')) 
console.log($(this).closest('.expandListContentRow div:nth-child(1)')) 

以检查问题is.Hope帮助