2011-05-03 4 views
0

Je crée une extension Safari qui peut facilement être affichée sur tumblr en cliquant et en maintenant une image. Le code fonctionne bien pour le moment sauf que tumblr utilise une fonction de défilement infinie sur sa page (lorsque vous faites défiler, plus de messages sont chargés sur la page en supposant ajax)Javascript/JQuery après la mise à jour de la page

Pour une raison quelconque, le script ne reconnaît pas le nouveau les messages qui sont chargés et le gestionnaire de clic d'image n'est jamais appelé - des idées pour résoudre ce problème?

Code d'extension:

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); 
}); 

Répondre

0

Vérifiez la fonction jQuery en direct 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

Bind fonctionne uniquement avec les éléments déjà en DOM. Essayez d'utiliser .live() ou .delegate()

N'oubliez pas d'utiliser .die() /. Undelegate() comme méthodes oposites, sinon vos requêtes se multiplieront.

Questions connexes