Делаю страницу с DIV в середине его с идентификатором «devices_div,» как так:Функция jQuery выполняется более одного раза, почему?
<div id="devices_div"></div>
При загрузке страницы или когда форма была отправлена, содержимое resource_table .php загружаются в DIV:
<script>
jQuery(document).ready(function()
{
jQuery("#devices_div").load("resource_table.php");
jQuery("#form").submit(function(event)
{
event.preventDefault();
var form = jQuery(this);
jQuery.ajax({
type: "POST",
data: form.serialize(),
url: form.attr("action"),
success: function(data)
{
jQuery("#devices_div").load("resource_table.php");
}
});
});
});
</script>
содержание resource_table.php являются:
<script>
jQuery("a#add_device").live('click', function()
{
jQuery("table#devices tr:last").after("<tr><td>Test</td><td>Test</td></tr>");
});
</script>
<table id="devices">
<tr>
<th>
Name
</th>
<th>
Xml Name
</th>
</tr>
</table>
<a id="add_device" href="#">Click here to add a device</a>
Когда я щелкаю по ссылке с идентификатором "add_device" пихты st time, он добавляет строку в таблицу «устройства» просто отлично.
Возникла проблема: при отправке формы и повторной ссылки на ссылку она добавляет две строки. Если я отправлю форму и нажмите ссылку в третий раз, она добавит три строки и т. Д. Таким образом, функция jQuery происходит более одного раза. Это должно произойти только один раз для каждого клика. Есть идеи?
Изменение обработчика событий в реальном времени для привязки фиксированного. Благодаря! Причина, по которой обработчик событий не находится на родительской странице, заключается в том, что мне нужно содержимое after() для динамического изменения на основе загружаемого ресурса. – David