Здравствуйте,
в общем то уже задал данный вопрос на одном форуме, но не думаю что это является проблемой.
Итак:
При подгрузке контента в котором есть скрытые элементы, на которые вешаются события click (функцией live),
эти события срабатывают столько раз, сколько этот самый контент и загрузили.
То есть, другими словами:
Нажимаем на ссылку -> загружается Html внутри которого есть скрытый элемент и jquery код который вешает событие на этот элемент.
Так вот если этот элемент после загрузки сделать видимым - то на него вешается событие onClick и всё в порядке, - но если опять нажать на
первую ссылку - событие отработает дважды.
Причём такая проблема только если грузится html со скрытым элементом, который показывается только после загрузки.
Для того что бы можно было лучше понять что я имею ввиду привожу код:
Код файла index.html (ненужные теги удалены)
<script type="text/javascript">
$(document).ready(function(){
$('a.upload').bind('click',function(){
$('div#uploadContainer').load('./upload.html');
});
$('a.uploadedLink').live('click',function(){
$('a.hiddenLink').show();
})
});
</script>
<a href="#" class="upload">Upload content</a>
<br><br><br>
<div id="uploadContainer">
Click above to load here some html
</div>
Весь код файла upload.html
<script type="text/javascript">
$(document).ready(function(){
$('a.hiddenLink').live('click',function(){
alert('Hello from hidden link');
});
});
</script>
<a href="#" class="uploadedLink">Click me to show hidden content</a><br><br>
<a href="#" class="hiddenLink" style="display:none;">Click me to trigger live event one or multiple times</a>
Возможно кто то уже сталкивался с данной проблемой?
Если будет нужно, - файлы приложил.
test.zip - только файлы index.html и upload.html (799Б)
и test-with-jquery.zip - три файла index.html, upload.html и jquery-1.4.2.min.js (24.2Кб) (что бы можно было просто распаковать и проверить результат)