2016-09-19 137 views
1

我目前正在尋找一些jQuery的建議,因爲我認爲我這樣做不正確,即使我得到我想要的結果。jQuery的導航 - 更改輸入的父母 - 父 - 母 - 父 - 兄弟

我想將輸入的值更改爲具有.milestone類的最近輸入值的值。我想改變的輸入是控股輸入,我希望它能夠改變修改後的輸入值。下面是我不能改變的HTML,因爲這是一個產品。

<div class="container area dform_section_area6"> 
    <div class="box box13 two"> 
     <div class="dform_section_box13"> 
      <div style="clear: both;" data-type="html" data-name="business_case_approved_pmr" id="dform_widget_html_business_case_approved_pmr" data-active="true" class="dform_widget dform_widget_type_html dform_widget_business_case_approved_pmr"> 
       <p>Business Case Approved</p> 

      </div> 
     </div> 
    </div> 
    <div class="box box14 two"> 
     <div class="dform_section_box14"> 
      <div data-type="date" data-name="bc_approved_planned_pmr" data-active="true" data-agentonly="false" class="container dform_widget dform_widget_field dform_widget_type_date dform_widget_bc_approved_planned_pmr dform_widget_bc_approved_planned_bc"> 
       <div> 
        <label for="dform_widget_bc_approved_planned_pmr">Planned</label> 
       </div> 
       <div> 
        <input id="dform_widget_bc_approved_planned_pmr" type="date" name="bc_approved_planned_pmr" data-mapfrom="bc_approved_planned_bc" class="dform_field_active"> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="box box15 two"> 
     <div class="dform_section_box15"> 
      <div data-type="select" data-name="bcapproval_on_target" data-active="true" data-agentonly="false" class="container dform_widget dform_widget_field dform_widget_type_select dform_widget_bcapproval_on_target dform_widget_"> 
       <div> 
        <label for="dform_widget_bcapproval_on_target">On target?</label> 
       </div> 
       <div> 
        <select id="dform_widget_bcapproval_on_target" name="bcapproval_on_target" class="dform_field_active"> 
         <option></option> 
         <option value="Yes" data-off="bc_approved_revised_pmr">Yes</option> 
         <option value="No" data-on="bc_approved_revised_pmr">No</option> 
        </select> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="box box16 two"> 
     <div class="dform_section_box16"> 
      <div data-type="date" data-name="bc_approved_revised_pmr" data-active="false" data-agentonly="false" class="container dform_widget milestone mrevise dform_widget_field dform_widget_type_date dform_widget_bc_approved_revised_pmr dform_widget_"> 
       <div> 
        <label for="dform_widget_bc_approved_revised_pmr">*Revised</label> 
       </div> 
       <div> 
        <input id="dform_widget_bc_approved_revised_pmr" type="date" name="bc_approved_revised_pmr" class=""> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="box box17 two"> 
     <div class="dform_section_box17"> 
      <div data-type="date" data-name="gate_3_actual1" data-active="true" data-agentonly="false" class="container dform_widget dform_widget_field dform_widget_type_date dform_widget_gate_3_actual1 dform_widget_"> 
       <div> 
        <label for="dform_widget_gate_3_actual1">Actual</label> 
       </div> 
       <div> 
        <input id="dform_widget_gate_3_actual1" type="date" name="gate_3_actual1" class="dform_field_active"> 
       </div> 
      </div> 
     </div> 
    </div> 
    <div class="box box18 last two"> 
     <div class="dform_section_box18"> 
      <div data-type="date" data-name="bc_approved_planned_bc" data-active="true" data-agentonly="false" class="container dform_widget param mrevise dform_widget_field dform_widget_type_date dform_widget_bc_approved_planned_bc dform_widget_"> 
       <div> 
        <label for="dform_widget_bc_approved_planned_bc">holding</label> 
       </div> 
       <div> 
        <input id="dform_widget_bc_approved_planned_bc" type="date" name="bc_approved_planned_bc" class="dform_field_active"> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

我使用下面的jQuery來找到我想要更新輸入的價值,但我不能不認爲必須有改變這種不太長篇大論方式。我不能只引用輸入的ID,因爲我需要爲20個以上的字段執行此操作。

$(this).parent().parent().parent().parent().next().next().find('.param').find('input').val() 

此=

<input id="dform_widget_bc_approved_revised_pmr" type="date" name="bc_approved_revised_pmr" class=""> 

回答

0

你可以用最接近()方法,並找到遞歸父()元素,然後找到子級元素的兄弟姐妹。

$(this).closest(".dform_section_area6").find('.param:last input').val() 
+0

不幸的是利用我,然後必須創建一個每個dform_section_area,目前有20個(dform_section_area1 - dform_section_area20) –