Как добавить событие изменения значения в динамически генерируемый список в таблице?

Я сгенерировал combobox динамически, используя следующий код

fila+=
'<td id="adul"><select name="cliente" class="populate select2-offscreen selectclient" style="width: 100%" tabindex="-1" onchange="changeAction()"  id="adul'+ types[i][j].numhabitacion +'">', 

Однако, когда я пытаюсь извлечь идентификатор, он показывает мне undefined.

function changeAction()
  { 
      var z=$(this).attr('id')
      alert(z);       
  }

Что вы предлагаете по этому поводу? С уважением ...

0
задан 10.01.2017, 01:36
0 ответов

Для ésto ты не нуждаешься jQuery, так как ты можешь соглашаться в id прямым способом путь свойство.

У тебя есть два выбора:

  • Происходить с ним this как параметр
  • Происходить с ним event как параметр

Происходя this как предложи @aldanux, ты перемещаешь элемент тот же (select), поэтому, имеешь доступ ко всем свойства и функции этого, между ними, id.

function onChange (select) {
   console.log(select.id); 
}
<select id="adul" onchange="onChange(this)">
  <option value="val1">Value 1</option>
  <option value="val2">Value 2</option>
</select>

Если ты происходишь event ты перемещаешь событие, которое взорвалось в изменении выбора. Полезный, если ты хочешь accederl событие, предотвращать распространение того же самого, и т.д.

function onChange (ev) {
   console.log(ev.target.id); 
}
<select id="adul" onchange="onChange(event)">
  <option value="val1">Value 1</option>
  <option value="val2">Value 2</option>
</select>
0
ответ дан 03.12.2019, 17:47

Ты получаешь id select вместо td:

Попробуй это:

function changeAction()
{ 
   var z = $(this).parent().attr('id');
   alert(z); 
}

Так ты получишь id td.

Пример работая:

$('select').on('change', function() {
  alert("idparent: " + $(this).parent().attr('id') + ", Select value" + this.value);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>Combo</th>
      <th>d1</th>
      <th>d2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td id="adul1">
        <select>
          <option value="1">One</option>
          <option value="2">Two</option>
        </select>
      </td>
      <td>dd</td>
      <td>ss</td>
    </tr>
    <tr>
      <td id="adul2">
        <select>
          <option value="1">One</option>
          <option value="2">Two</option>
        </select>

      </td>
      <td>aa</td>
      <td>qq</td>
    </tr>
  </tbody>
</table>

Только помни, что id должен будь быть уникумом в момент произвождения этого dinamicamente.

-1
ответ дан 03.12.2019, 17:47