2016-09-19 160 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) –