2010-09-26 5 views
2

Bonjour, je ne partage pas de code. le problème est dans ce code s'il vous plaît jeter un oeil. (Problème. Je veux ouvrir facebox chaque fois que poste viennent même de ajax facebox ne fonctionne pas correctement, je veux demander comment utiliser l'événement de la délégation jQuery avec cet événement?)Délégation jQuery avec Facebox

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <link rel="stylesheet" href="facebox/facebox.css" type="text/css" />  
</head> 
<body> 

<ul id="items"> 
    <li> <a href='#'> Clone Object </a> </li> 
    <li> <a href='#test' rel='facebox'> Click to open facebox </a> </li> 
</ul> 

<div id="test" style="display:none;">this is my test div</div> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script type="text/javascript" src="facebox/facebox.js"></script> 

<script type="text/javascript"> 

    jQuery('a[rel*=facebox]').facebox(); 

    $("#items li").delegate('a', 'click', function(){ 
     $(this).parent().append('<li><a href="#test" rel="facebox"> New Element (problem: it should open facebox) </a></li>'); 
     return false; 
    }); 

</script> 

</bdoy> 
</html> 
+0

Quelle est votre question? Ce n'est pas un site de partage de code. –

+0

Salut, je ne partage pas de code. le problème est dans ce code s'il vous plaît jeter un oeil. (problème: je veux ouvrir facebox à chaque fois que post vient même d'ajax facebox ne fonctionne pas correctement.Je veux demander comment utiliser l'événement de délégation jQuery avec cet événement?) – zarpio

+0

@Felix - la question est dans le code, mais oui il devrait être plus clair à l'extérieur, zarpio mis à jour si :) –

Répondre

2

Quelques choses, d'abord changer à l'aide .live(), en passant ceci:

jQuery('a[rel*=facebox]').facebox(); 

pour cela:

jQuery('a[rel*=facebox]').live('click', function(e) { 
    $.facebox({ div: this.hash }); 
    e.preventDefault(); 
}); 

Ou la version .delegate():

$('#items').delegate('a[rel*=facebox]', 'click', function(e) { 
    $.facebox({ div: this.hash }); 
    e.preventDefault(); 
}); 

Ensuite, votre appel .parent() est l'ajout d'un <li> à un <li>, au lieu que vous devez remplacer:

$(this).parent() 

Avec .cloest() il monte au <ul> et il ajoute comme un enfant , comme ceci:

$(this).closest("ul") 

You can test out the updated version with the above changes (without images) here.

+0

@zarpio - bienvenue :) –