gpt4 book ai didi

Jquery 父子选择器改进

转载 作者:行者123 更新时间:2023-12-01 08:22:24 25 4
gpt4 key购买 nike

我正在学习Jquery,希望能做得更好。我已经找到解决办法了,想看看经验丰富的老手会怎么做……如果有更多的 Eloquent 的话,可以这么说。

问题是我有一个位于表格行中的小部件。该小部件与所有其他 20 个小部件具有相同的类。当有人单击特定的小部件时,只有该小部件应该发生变化。

这是 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>

这是我对 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');
}

是否有比这更好的方法来选择父级然后选择第二组子级到单击的对象?

谢谢

最佳答案

我建议使用:

var parent = $(this).closest('div.deal-widget');
var originalVote = parent.find('span.totalcoupons').text();

closest() 在祖先元素中搜索与提供的选择器匹配的第一个元素; find() 在后代元素中搜索与提供的选择器匹配的元素。

虽然 closest() 仅返回一个匹配项(与选择器匹配的最接近/*第一个*元素),但值得注意的是 find() 可能返回多个元素。

<小时/>

引用文献:

关于Jquery 父子选择器改进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6589376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com