如何通过ID找到最近的div,然后找到该div中所有表单的ID

时间:2016-09-30 22:36:20

标签: javascript jquery

我希望找到最近的div,其中包含一个' form_wrap'单击时按钮,然后找到该div中所有表单的ID。

这些表格作为两个Laravel foreach循环的一部分,并且已经被赋予了单独的动态ID号。需要收集这些ID号然后再提交。

<div class="form_wrap">  
    @foreach ($workouts as $workout)
         <?php $formid="form_".$x."_".$f;?>
         {!! Form::open(array('route' => 'workoutshared.store', 'method' => 'POST', 'ID' => $formid)) !!}
         {{ csrf_field() }}
         {{ Form::hidden('user_id', Auth::user()->id)}}
         {{ Form::hidden('date', $entry)}}
         {{ Form::hidden('weight', $workout->weight)}}
         {{ Form::hidden('exercise', $workout->exercise)}}
         {{ Form::hidden('reps', $workout->reps)}}
         {{ Form::hidden('sets', $workout->sets)}}
         <button id="submit" class="btn btn-default">Share</button>               
         {{ Form::checkbox('share', null, array('class' => 'form-control', 'required' => ''))}}
         {!! Form::close() !!}     
         <tr>
               <th>{{$workout->exercise}}</th>
               <td>{{$workout->weight}}</td>
               <td>{{$workout->reps}}</td>
               <td>{{$workout->sets}}</td>
         </tr>
    <?php $f++; endforeach;?>
 </div>

2 个答案:

答案 0 :(得分:1)

我认为您希望$( "[id^='form_']" )找到以&#34;形式_&#34;开头的任何ID。虽然在尝试在页面上查找多个元素时使用类是更好的选择。

var formWrap = $( "#SomeSpecificID" ).parent();
var formsInsideThatID = formWrap.children().attr('id');

答案 1 :(得分:1)

您遗漏了许多细节,因此可能需要修改答案以匹配。

例如 - 您是否要允许表单提交?拦截呢?或者你在乎吗?

另一点是 - 一旦你拥有它们,你想用ID做什么?

此代码将执行您所要求的操作。它使用事件委派,因此您应该可以在<head>中加载它,它仍然可以按要求运行。

// Bind to the click event of all form buttons
$(document).on('click', 'form button', function() {
    // Find the closest div
    var wrap = $(this).closest('div.form_wrap');

    // Then, find all form ID's inside of the div:
    wrap.find('form').each(function() {
        var id = $(this).prop('id');
    });
});

您对这些ID的处理取决于您,但根据您的需要,有多种选择。