2011-10-09 4 views
1

Bonjour, pour une raison quelconque, ma fonction live() ne fonctionne pas. Je veux ajouter un élément mew li avec la fonctionnalité de clic en cliquant sur l'élément li dans ulAllApps. un nouvel élément li créé à l'intérieur de ulMyApps mais sans la fonctionnalité de clic.jQuery Live() ne fonctionne pas

HTML:

<div class="MyApps" > 
    <ul class="ulMyApps"> 
     <li class="MYLinkTR">app1</li> 
    </ul>  
</div> 
<div class="AllApps"> 
    <ul class="ulAllApps"> 
     <li class="IECLinkTR">app1</li> 
     <li class="IECLinkTR">app2</li> 
    </ul> 
</div> 

Code jQuery:

$(document).ready(function() { 

$(".IECLinkTR").click(function() { 
    var tmp = $(this).html(); 
    $.ajax({ 
     type: "POST", 
     url: window.location.href+"/addToMyLinks", 
     data: "{'app': '" + tmp + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      $(".ulMyApps").append("<li class=\"MYLinkTR\">"+ tmp +"</li>"); 
     }, 
     error: function (msg) { 
      alert("You have already have that app");     
     } 
    }); 
}); 

$(".MYLinkTR").live('click', function() { 
    var tmp = $(this); 
    $.ajax({ 
     type: "POST", 
     url: window.location.href + "/removeFromMyLinks", 
     data: "{'app': '" + $(this).html() + "'}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (msg) { 
      tmp.closest('li').remove(); 
     }, 
     error: function (msg) { 
     } 
    }); 
}); 
}); 

de quelque raison que le nouvel élément li créé dynamiquement DonT ont la fonctionnalité CLICK venant de la fonction en direct ......

+0

vous obtenez une erreur, s'il vous plaît vérifier la console d'erreur – punit

Répondre

0

Tout ce que je peux voir est que sur votre fonction de clic MYLinkTR vous essayez de supprimer le tmp.closest ('li'). Maintenant, en regardant les documents que je pense le plus proche est en train de remonter le DOM à la recherche de la prochaine plus proche («li») plutôt que celui sur lequel il est. Êtes-vous sûr de ne pas vouloir tmp.remove()?

Peut-être voir si une alerte est lancée en premier sur le clic pour voir si elle se déclenche car vous ne faites rien en cas d'erreur. Il se peut qu'il se passe quelque chose ici dont vous n'êtes pas au courant. Les autres options sont en train de changer LIVE pour déléguer et attacher ce à ul et voir si cela déclenche

$('ul.MyApps').delegate('li', 'click', function(e){ 
     alert('does this at least fire'); 
    }); 
+0

Je suis d'accord, ce tmp.remove devrait être(). –

Questions connexes