2014-10-29 3 views
0

Хорошо, но это сейчас n Два вопроса.как получить доступ к значению атрибута статуса

Как пройти от Riversdale до Western Cape
и
, как получить доступ значение атрибута статуса (который я думаю, что уже ответил)

но теперь выбрать правильный атрибут является небольшая проблема.

entry = $(this).closest('.expandListContentRow div:nth-child(1)').attr('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 в данном случае. Ive явно пересекалось неправильно раньше, так как вы получаете от Riversdale до Western Cape?

ответ

1

необходимо передать имя атрибута в .attr(), чтобы получить значение. у вас есть дубликаты идентификаторов для некоторых элементов. что неправильно. также у вас есть неправильный селектор для целевого div. использование:

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

Следует отметить, что использование атрибутов неспециалистов в вашем HTML сделает вашу страницу недействительной. Используйте данных- * атрибут вместо:

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

+0

@mornenel: работает отлично здесь http: //jsfiddle.net/9brjp7c2/ –

+0

mmm Ладно, может быть, я не на правом ладошке после прохождения.Спасибо за помощь, я буду использовать это, просто нужно убедиться в моем прохождении. – morne

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

ммм Ладно, может быть, я не в правильном ладони после прохождения. Спасибо за помощь, я буду использовать это, просто нужно убедиться в моем прохождении. – morne

1

Как уже отмечалось другими, это должно работать

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

но вы не получаете желаемого результата, так что

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

, чтобы проверить, где проблема is.Hope что помогает

Смежные вопросы