jquery не распознает идентификатор элемента HTML

0

Я не знаю, почему событие jQuery click на #btn не работает.

'//this is the script' 
$('document').ready(function(){
  $('#btn').click(function(){
    alert('2');
  });
});

function appendToPopUp(){
  document.getElementById('popUp').innerHTML='<BUTTON id="btn" onClick="alert(1)">clickerIci</BUTTON>';
}

<!--this is the body-->
<DIV id='popUp'></DIV>
<BUTTON onClick='appendToPopUp()'>display</BUTTON>
  • 3
    Это должен быть $(document).ready(...
Теги:

2 ответа

3

Здесь есть пара проблем:

$('document').ready(...

должно быть:

$(document).ready(...

Затем вы динамически вставляете кнопку btn. Поскольку он недоступен в document.ready это событие не привязано к нему вообще. Вам нужно будет повторно appendToPopUp событие внутри appendToPopUp.

function appendToPopUp()
{
  document.getElementById('popUp').innerHTML='<BUTTON id="btn" onClick="alert(1)">clickerIci</BUTTON>';

  $('#btn').click(function(){
    alert('2');
  });
}

Итак, в этом случае вам действительно не нужен $(document).ready().

редактировать

То, что я на самом деле делаю, это что-то вроде этого:

<DIV id='popUp'></DIV>
<BUTTON id="display">display</BUTTON>

$(document).ready(function() {
  $('#display').on('click', function() {
    $('#popUp').html('<BUTTON id="btn">clickerIci</BUTTON>');

    $('#btn').on('click', function() {
      alert('2');
    });
  });
});

См. JSFiddle.

  • 0
    Или вы могли бы делегировать событие тоже
  • 0
    почему вы не предложили делегирование событий на этом этапе ../
Показать ещё 1 комментарий
0
Try with the below HTML...
On page load Jquery doesn't know about #btn so it will not bind the events so we explitcly calling the bindevents function after it is loaded to DOM.

<script>
function bindevents(){
    $('#btn').on("click",function(){
          alert('2');
    });
}
function appendToPopUp()
{
  document.getElementById('popUp').innerHTML='<BUTTON id="btn"   onClick="alert(1)">clickerIci</BUTTON>';
   bindevents();
}
</script>
<DIV id='popUp'></DIV>
<BUTTON onClick='appendToPopUp()'>display</BUTTON>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню