Родительский и дочерний выбор, не может получить доступ к первому родителю (jquery) - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблема с выбором родительского / дочернего объекта с помощью jquery.

У меня есть HTML-страница, которая выглядит следующим образом:

<tr> 
   <input type='checkbox' /> //1st checkbox
   <.. some stuff ../>
</tr>
<tr>
   <td><input type='checkbox' /></td> //2nd checkbox
   <td>
     <select id='stateChanger' onchange='stateChanger();'/>
       <option> ...</option>
       ...
   </td> 
</tr>

Я хочу установить флажоклинии я изменил с моим выбором в тот момент, когда я изменил его.Но с помощью приведенного ниже кода я отмечаю только первый флажок.

function stateChanger(){

        $('#stateChanger').parent().parent().children('td').children("input[type='checkbox']").attr("checked","true");
}

Если у кого-нибудь возникнет идея помочь мне, я могу выложить полный код.Благодарю.Victor

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018
$('#stateChanger').closest('tr').find("td input[type='checkbox']").attr("checked","true");

closest() находит ближайшего родителя целевого элемента.

0 голосов
/ 25 апреля 2018

Вы можете использовать как следующие

function stateChanger(){
    $('#stateChanger').closest('tr').find('td:eq(0)').find('input[type="checkbox"]').prop('checked', true);
}
table td{ border:1px solid #999; }
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr> 
        <td><input type='checkbox' /></td>        
    </tr>
    <tr>
        <td><input type='checkbox' /></td>
        <td>
            <select id='stateChanger' onchange='stateChanger();'>
                <option value="0">Select Value</option>
                <option value="1">Option 1</option>
            </select>
        </td> 
    </tr>
</table>
0 голосов
/ 25 апреля 2018

Вы можете использовать:

function stateChanger(obj) {
  $(obj).closest("tr").find("td:first input[type='checkbox']").attr("checked", "true")
}

и добавить this к onchange='stateChanger();', так что это будет onchange='stateChanger(this);'

Это будет проверять второй <input type='checkbox' />

демо

function stateChanger(obj) {
  $(obj).closest("tr").find("td:first input[type='checkbox']").attr("checked", "true")
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tr>
    <input type='checkbox' />
  </tr>
  <tr>
    <td><input type='checkbox' /></td>
    <td>
      <select id='stateChanger' onchange='stateChanger(this);' />
      <option> ...</option>
      <option>texst</option>
    </td>
  </tr>
</table>
...