2010-02-25 4 views
1

À l'heure actuelle, je suis la construction d'une liste en utilisant le code suivant:JQuery Liste des événements

$('<li id="li' + jJob.Id + '"><div style="width: 98%; background-color: #9E7BFF; colour: #000000"><a href="javascript:void(0);">' + jJob.Type + ' ' + jJob.AddressClean + ' (' + jJob.Status + ')' + '</a></div></li>').click(function(e) { ShowStatus('job ' + jJob.Id + ' is available'); UnassignJob(jJob.Id); $(this).remove(); }).bind("contextmenu", function(e) { alert('li' + jJob.Id); return false; }).appendTo('#assignmentList'); 

Cela fonctionne comme précédemment requis. Cependant je dois pouvoir ajouter un autre lien qui montrera un autre menu permettant différentes options. Le problème est que j'ai attaché l'événement click à la div. Comment puis-je l'attacher uniquement au lien?

  • Créer li
  • Créer div
  • Créer un lien avec le clic événement
  • Créer un autre clic lien événement
  • Append li #assignmentList

Mark

+0

Je sais que mon commentaire est pas tout à fait constructive, mais ma première réaction à c'était: ça alors, je me demande qui arrive à maintenir et à déboguer ce genre de choses plus tard. Et puis, j'ai commencé à penser à des modèles jQuery ... –

Répondre

1

Vous souhaitez ajouter votre événement onclick à votre <a> lien à l'intérieur du li correct?

Une option serait de supprimer le

.click(function(e) { ShowStatus('job ' + jJob.Id + ' is available'); UnassignJob(jJob.Id); $(this).remove(); }) 

Et placer la place dans votre lien, par exemple

'<a href="javascript:NewClickEvent(' + jJob.Id + ')"> stuff </a>' 

Où NewClickEvent est défini comme

function NewClickEvent(jobID) 
{ 
ShowStatus('job ' + jobID + ' is available'); 
UnassignJob(jobID); $(this).remove(); 
} 

Remarque- vous pourriez avoir à bricoler ce un peu pour obtenir $(this) pour travailler comme il l'a fait auparavant ... pas sûr quel objet il ramènera actuellement .

Vous pouvez utiliser l'attribut href comme indiqué ou ajouter un attribut onclick au lien.

Espérons que cela devrait vous donner au moins un peu d'inspiration :)

+0

Dykam, merci pour la réponse - il s'est avéré que le $ (this) .remove() était redondant! – markpirvine

+0

Pas de problème - la réponse est à moi, Dykam a gentiment corrigé une faute de frappe :) Une autre chose à noter est que déplacer des choses à des fonctions comme celle-ci peut aussi améliorer la lisibilité de votre code. – RYFN

+0

Zeus, désolé pour la confusion! Mon style de codage peut être difficile à lire - comme de tout obtenir en une seule ligne - mais cela m'a mordu à plusieurs reprises! – markpirvine