2013-07-27 3 views
0

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

<?php 
?> 

<html> 
<head> 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $('.input').click(function() 
      { 
       $("p").prepend('<input type="button" id="hh" value="remmove" />'); 
      }); 

      $('#hh').on('click',function() 
      { 
       alert('raman'); 
      }); 
     }); 


    </script> 
</head> 
<body> 
<p> 
    <input type="button" class="input" value="add"/> 

</p> 
</body> 
</html> 

, пожалуйста, дайте мне знать, что не так с этим кодом. когда я нажимаю кнопку с id 'hh', имея значение remmove, чем я не могу получить результат, то есть, alert.

+0

Это может помогает: http://stackoverflow.com/questions/17122485/how-to-bind-event-on-dynamic-generated-input-element-check-box/17127950#17127950 –

ответ

0

Проблема в том, что ваш элемент не существует в то время, когда вы пытаетесь добавить к нему обработчик кликов. Просто переместите $('#hh').on('click'... в пределах анонимной функции для $('.input').click.

 $('.input').click(function() 
     { 
      $("p").prepend('<input type="button" id="hh" value="remmove" />'); 
      $('#hh').on('click',function() 
      { 
       alert('raman'); 
      }); 
     }); 
1

Вам необходимо делегировать событие родительскому элементу, который добавляется динамически.

$(document).on('click', '#hh',function() 
{ 
    alert('raman'); 
}); 

делегированного событиеhave the advantage that they can process events from descendant elements that are added to the document at a later time. By picking an element that is guaranteed to be present at the time the delegated event handler is attached, you can use delegated events to avoid the need to frequently attach and remove event handlers.

+0

Добро пожаловать @ user1334573 – Adil

1

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

 $(document).on('click','#hh',function() 
     { 
      alert('raman'); 
     }) 

Если вы планируете добавить несколько кнопок, а затем использовать класс вместо идентификатора

$(document).ready(function() { 
    $('.input').click(function() { 
     $("p").prepend('<input type="button" class="hh" value="remmove" />'); 
    }); 

    $(document).on('click', '.hh', function() { 
     alert('raman'); 
    }); 
}); 

Демо: Fiddle

0

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

$(document).ready(function() { 
    $('.input').click(function() { 
    $("p").prepend('<input type="button" id="hh" value="remmove" />').find("#hh").on('click',function() { 
     alert('raman'); 
    }); 
    }); 
}); 
0

сцепления вы должны использовать это

$(document).ready(function() { 
     $('.input').click(function() { 
      $("p").prepend('<input type="button" id="hh" value="remmove" />'); 
     }); 
     $(document).on('click', "#hh", function() { 
      alert('raman'); 
     }); 

    }); 

http://jsfiddle.net/AZdEy/

Смежные вопросы