jQuery обрабатывает события, когда элементы генерируются во время выполнения

#javascript #php #jquery #html #loops

#javascript #php #jquery #HTML #циклы

Вопрос:

Отказ от ответственности: Я новичок в jQuery

Я не знаю, как озаглавить этот вопрос, но сначала мой код приведен ниже

 $(document).on("click" ,'[id^="picChangeAddress"]', function() {
    $('div[id^="divAddressSet"]').toggle();
});
  

Пожалуйста, не то, чтобы у меня было одинаковое количество div и флажков, каждый формат имени также одинаков, например, флажки picChangeAddress1, picChangeAddress2 и так далее, а также div divAddressSet1, divAddressSet2 и так далее.

Я использовал приведенный выше код, потому что эти идентификаторы генерируются во время выполнения. Сначала мне нужно задать несколько вопросов, когда я нажимаю на один флажок, все это влияет на каждый div div[id^="divAddressSet"] на странице, и все они переключаются, когда я нажимаю на любой из [id^="picChangeAddress"] флажков. Я хотел бы, чтобы вы помогли мне в том, как показывать или скрывать только один div за раз.

Есть идея?

Ответ №1:

Вы можете извлечь число из идентификатора, затем вы можете использовать селектор идентификатора, чтобы скрыть div

 $(document).on("click" ,'[id^="picChangeAddress"]', function() {
    var num = parseInt(this.id.match(/d /)[0],10); //Extract number
    $('#divAddressSet' num).toggle();
});
  

Комментарии:

1. @Jai, Да, но всегда будьте в безопасности.

2. я обычно не использую .match() , но, похоже, отличный друг.

Ответ №2:

Вам нужно извлечь номер из идентификатора и использовать его, чтобы настроить правильный селектор:

 $(document).on("click" ,'[id^="picChangeAddress"]', function() {
    $('div[id="divAddressSet' this.id.substring(16) '"]').toggle();
});
  

Ответ №3:

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

 $(document).on("click" ,'[id^="picChangeAddress"]', function() {
  var o = this.id.split('').pop();
  $("#divAddressSet" o).toggle();
});
  

Комментарии:

1. @RGraham да, хороший улов.