J'apprends Jquery et espère faire mieux. J'ai trouvé une solution, et je veux voir comment un ancien combattant aguerri le ferait ... S'il y a plus d'éloquence, pour ainsi dire.Amélioration du sélecteur d'enfant parent Jquery
Le problème est que j'ai un widget qui repose dans une ligne de table. Le widget a les mêmes classes que tous les autres 20 widget. Quand quelqu'un clique sur un widget particulier, seul ce widget devrait changer.
Voici le HTML:
<div class="deal-widget">
<div class="deal-widget-left">
<div class="deal-widget-left-countdown">
<span class="totalcoupons">500</span> of <span class="maxcoupons">500</span>
</div>
<div class="deal-widget-left-remain">
Remaining
</div>
</div>
<div class="deal-widget-right is_open">
<a href="/deal/claim/1113" class="deal-link">Claim It!</a>
</div>
</div>
Voici mon coup de couteau au JQuery:
Drupal.behaviors.plusone = function (context) {
$('a.deal-link:not(.deal-processed)', context).click(function() {
var parent = $(this).parents('div.deal-widget');
var originalVote = parent.children('div.deal-widget-left').children('div.deal-widget-left-countdown').children('span.totalcoupons').text();
var originalVoteInt = parseInt(originalVote);
var voteSaved = function (data) {
parent.children('div.deal-widget-left').children('div.deal-widget-left-countdown').children('span.totalcoupons').html(originalVoteInt - data.total_votes);
parent.children('div.deal-widget-right').html(data.voted);
parent.children('div.deal-widget-right').removeClass('is_open').addClass(data.votedClass);
}
$.ajax({
type: 'POST',
url: this.href,
dataType: 'json',
success: voteSaved,
data: 'js=1'
});
return false;
})
.addClass('deal-processed');
}
Y at-il une meilleure façon de sélectionner des parents alors deuxième ensemble d'enfants à un cliqué sur l'objet que celui-ci ?
Merci
Joe
.closest() fonctionne comme un charme! Merci pour la méthode de diff. Je l'utilise. - Joe –
De rien! Je suis heureux d'avoir aidé =) Je suggérerais que si cette réponse, ou une autre, résolvait votre problème, vous devriez envisager d'accepter (cliquez sur la coche à côté de la réponse) ou de voter (cliquez sur la flèche vers le haut à gauche) . Ce n'est pas obligatoire, mais est apprécié par la communauté. –
J'ai cliqué sur la coche et elle est devenue verte. Je n'ai pas encore obtenu le statut pour voter haut ou bas. Mais quand je le fais ... Joe –