#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() в качестве альтернативных методов, иначе ваши запросы будут умножаться.