Javascript / Jquery после обновления страницы - PullRequest
0 голосов
/ 03 мая 2011

Я делаю расширение 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);
});

Ответы [ 2 ]

0 голосов
/ 03 мая 2011

Проверьте функцию jQuery live http://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);
});
0 голосов
/ 03 мая 2011

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

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

...