Javascript / Jquery после обновления страницы

#javascript #jquery #html #ajax #tumblr

#javascript #jquery #HTML #ajax #tumblr

Вопрос:

Я создаю расширение Safari, которое легко публикует на tumblr, щелкая и удерживая изображение. В настоящее время весь код работает нормально, за исключением того, что tumblr использует функцию бесконечной прокрутки на своей странице (по мере прокрутки на страницу загружается больше сообщений, я полагаю, с использованием ajax)

По какой-то причине скрипт не распознает новые записи, которые загружаются, и обработчик кликов по изображению никогда не вызывается — есть идеи, как это исправить?

Код расширения:

 function confirmShare(src) {
var answer = confirm("Add image to queue?n" src)
if (answer){
    $('body').append('<iframe class="quickpostframedatasend" height=0 width=0 style="display:none;" src="http://1hype.me/quickpost/saveimage.php?src='   src   '"></iframe>');
}

}



var timeoutId = 0;

$('img').mousedown(function() {
    src = $(this).attr("src");
    timeoutId = setTimeout('confirmShare(src)', 900);
}).bind('mouseup mouseleave', function() {
    clearTimeout(timeoutId);
});
  

Ответ №1:

Проверьте оперативную функцию jQueryhttp://api.jquery.com/live /

 $("img").live("mousedown", function() {
    src = $(this).attr("src");
    timeoutId = setTimeout('confirmShare(src)', 900);
}).live("mouseup", function() {
    clearTimeout(timeoutId);
}).live("mouseleave", function() {
    clearTimeout(timeoutId);
});
  

Ответ №2:

Привязка работает только с элементами, уже находящимися в DOM. Попробуйте использовать .live () или .delegate()http://api.jquery.com/delegate /

Кроме того, не забудьте использовать .die() /.undelegate() в качестве альтернативных методов, иначе ваши запросы будут умножаться.