2015-04-28 2 views
2

Привет всем Я нуждаясь следующий HTML-код, чтобы получить значение «обеспечивают лучшую улыбку», который, кажется, 6 пред() и 2 Следующий().найти правильный тег SPAN, используя JQuery Prev() и следующий()

<div id="eea305a4-32b2-434d-8623-4dc3e2fcf119F_SelectMany" class="lfFormField 
    lfFormFieldSelectMany F_Form1-P_NewPage-F_SelectMany"> 
    <div class=""> 
    <fieldset class="composite-field-fieldset"> 
     <legend class="no-form-field-mandatory-sign-css"> 
     <span id="F_SelectMany-required" 
       class="form-field-mandatory-sign-css lfFormFieldRequiredMarker no-form-field-mandatory-sign-css">*</span> 
     <span class="form-field-title-sign-css lfFormLabel">deliver best smile</span> 
     </legend> 
     <div style="padding=left:0.1em" 
      dojoattachevent="onmouseover:onMouseOver, onclick:onClick, onmouseout:onMouseOut" 
      class="dojoDndHandle freedom-base-mixin-css" 
      id="eea305a4-32b2-434d-8623-4dc3e2fcf119F_SelectMany-widget" 
      widgetid="eea305a4-32b2-434d-8623-4dc3e2fcf119F_SelectMany-widget"> 
     <ul id="e2b7488e-a88c-4da0-8287-4f8e4e6091f4tbl" 
      dojoattachpoint="containerNode,focusNode" 
      class="selection-group"> 
      <li dojoattachpoint="listItem" 
       class="vertical-selection-group-item" 
       id="freedom_widget_solution_form_FreedomOptionButton_0" 
       value="0" type="checkbox" 
       widgetid="freedom_widget_solution_form_FreedomOptionButton_0"> 
      <div class="selection-group-item-container notDojoDndHandle"> 
       <span dojoattachevent="onmouseover:onMouseOver, onclick:onClick, onmouseout:onMouseOut" 
        class="selection-group-item-input dijitInline freedom-base-mixin-css freedom-base-mixin-cssChecked dijitChecked" 
        widgetid="2ff949f4-c88e-4769-8e36-23c81661af92-btn"> 
       <input dojoattachpoint="textbox,focusNode,_aroundNode" 
         id="2ff949f4-c88e-4769-8e36-23c81661af92-btn" 
         class="dijitReset dijitCheckBox notDojoDndHandle" 
         type="checkbox" tabindex="0" 
         dojoattachevent="onclick:_onClick" 
         role="checkbox" aria-checked="true" 
         name="group_eea305a4-32b2-434d-8623-4dc3e2fcf119F_SelectMany-widget" 
         value="Achieve and maintain quality" 
         style="-webkit-user-select: none;">  
       </span> 
       <div class="selection-group-item-text-container dijitInline"> 
       <label dojoattachpoint="titleNode" 
         for="2ff949f4-c88e-4769-8e36-23c81661af92-btn" 
         class="selection-group-item-text bold-selection-group-item">Achieve and maintain quality</label> 
       </div> 
      </div> 
      </li> 

Моя позиция в это время находится в Достичь и поддерживать качество значение из входного тега.

В настоящее время я попробовал следующее:

if ($(this).is(":checked")) { 
    var testing = $(this).prev().prev().prev().prev().prev().prev().next().next().html(); 
    console.log(testing); 
    loop++; 
} 

Тестирование вара является то, что я пытаюсь получить это значение из, но он приходит с «неопределенным», так что я предполагаю, что я не останавливаясь на достигнутом правильное место?

Любая помощь будет замечательной!

+0

Почему бы не просто выбрать свой класс? '.form-field-title-sign-css' .. он также кажется уникальным в этом примере разметки. – Musk

+0

Тег '' обернут в '' и не имеет узлов-братьев. По [документации] (https://api.jquery.com/prev/), '.Функция prev() 'пересекает братьев и сестер, но не пересекает дерево DOM, поэтому я не думаю, что решение' .prev() ', которое вы указали, будет работать, что, вероятно, является причиной того, что вы становитесь неопределенным. – War10ck

ответ

5

Вы можете попробовать перейти к родительскому контейнеру, а затем выполнить поиск по этому элементу по его классу.

Например:

Traverse родителю по ID:

$(this).closest('#eea305a4-32b2-434d-8623-4dc3e2fcf119F_SelectMany').find('.form-field-title-sign-css'); 

Traverse родителю по классам:

$(this).closest('.lfFormField').find('.form-field-title-sign-css'); 

Или траверс к родителю по HTML элемента:

$(this).closest('fieldset').find('.form-field-title-sign-css'); 

И чтобы получить значение, в этом случае вы, вероятно, захотите сделать .text() вместо .html(). Если, конечно, вы действительно не хотите весь HTML.

И, наконец, если этот идентификатор F_SelectMany-required не является случайным. Вы могли бы сделать это вместо этого. Что должно помочь ему быть более конкретным.

$(this).closest('.lfFormField').find('#F_SelectMany-required').children('.form-field-title-sign-css'); 
+0

или $ (this) .closest ('fieldset') ... – Ted

+0

@Ted, да. Я добавлю, что тоже –

+1

lol эти идентификаторы повреждают мой мозг – Ted

0

Проверить этот код

$(function(){ 
 
    var $lbl=$("label[dojoattachpoint='titleNode']"); //Your position 
 
    $lbl.click(function(){ 
 
     if (!$("#" + $(this).attr("for")).is(":checked")) { 
 
      var $fieldset=$(this).closest("fieldset"); 
 
      alert($("legend",$fieldset).find("span").text());  
 
     } 
 
    })  
 
})

+0

Пожалуйста, не используйте «исполняемый фрагмент кода», если только ваш код не работает. Или используйте стандартный блок кода или попробуйте добавить jQuery и некоторый образец html, чтобы показать ваш код в действии. – redbmk

0

пред Jquery (в) дает предыдущий родственный. В DOM документа, который вы публикуете, вход с «Достижением и поддержанием качества» в значении не имеет ни одного брата и сестры. Это единственный дочерний элемент span, который окружает его, поэтому вы получите undefined независимо от того, какая комбинация prev() и next() вы делаете. Вы имели в виду использовать parent() вместо prev()? Но гораздо лучше, чтобы дать этот промежуток идентификатор доставить лучшую улыбку и получить к нему с помощью $ («# SmileSpanId»)

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