作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在toggleClass之间找到这个元素。这是我到目前为止尝试过的。这是我的 JSFIDDLE http://jsfiddle.net/8rrctstf/12/
我应该得到元素 vote_count
。
HTML
<div class="pull-right">
<a class="vote upvote" data-product_id="12" href="#">
<span class="fa fa-thumbs-up"></span>
</a>
<span class="vote_count">100</span>
<!-- FIND THIS -->
<a class="vote downvote" data-product_id="12" href="#">
<span class="fa fa-thumbs-down"></span>
</a>
</div>
JQUERY
$('.vote').click(function (e) {
e.preventDefault();
var product_id = $(this).data('product_id');
alert($(this).next().text()); // TRIED SO FAR
$(this).siblings('a.vote').removeClass('active');
$(this).toggleClass('active');
if (!$(this).hasClass('active')) {
// alert(product_id + ' :unvote');
$.get("{{ URL::route('unvote') }}", {
product_id: product_id
}).done(function (data) {
console.log(data);
});
} else {
if ($(this).hasClass('upvote')) {
// alert(product_id + ' :upvote');
$.get("{{ URL::route('upvote') }}", {
product_id: product_id
}).done(function (data) {
console.log(data);
});
} else {
// alert(product_id + ' :downvote');
$.get("{{ URL::route('downvote') }}", {
product_id: product_id
}).done(function (data) {
console.log(data);
});
}
}
});
编辑如何做增量(+1),减量(-1),重置(0)
编辑2我的回答是因为 js 的这种增量似乎很难。
$('.vote').click(function (e) {
e.preventDefault();
var product_id = $(this).data('product_id');
var voteCount = $(this).siblings('.vote_count');
$(this).siblings('a.vote').removeClass('active');
$(this).toggleClass('active');
if (!$(this).hasClass('active')) {
// alert(product_id + ' :unvote');
$.get("{{ URL::route('unvote') }}", {
product_id: product_id
}).done(function (data) {
voteCount.text(data[0].vote_count);
});
} else {
if ($(this).hasClass('upvote')) {
// alert(product_id + ' :upvote');
$.get("{{ URL::route('upvote') }}", {
product_id: product_id
}).done(function (data) {
voteCount.text(data[0].vote_count);
});
} else {
// alert(product_id + ' :downvote');
$.get("{{ URL::route('downvote') }}", {
product_id: product_id
}).done(function (data) {
voteCount.text(data[0].vote_count);
});
}
}
});
最佳答案
你可以使用siblings
方法
$(this).siblings('.vote_count')
$('.vote').click(function(e) {
e.preventDefault();
// Cache votecount element jQuery object
var $voteCount = $(this).siblings('.vote_count');
// Get the votes count
var count = +$voteCount.text();
$(this).toggleClass('active');
if (!$(this).hasClass('active')) {
// When unvoting, if previous vote is upvote then decrement it by one
// If previous vote is downvote then increment it by one
$voteCount.text($(this).hasClass('upvote') ? --count : ++count);
} else {
if ($(this).siblings('a.vote').hasClass('active')) {
$voteCount.text($(this).siblings('a.active').hasClass('upvote') ? count - 2 : count + 2);
} else if ($(this).hasClass('upvote')) {
// Increase vote count by one
$voteCount.text(++count);
} else {
// Decrease vote count by one
$voteCount.text(--count);
}
}
$(this).siblings('a.vote').removeClass('active');
});
.vote {
color: Black;
}
.active.upvote {
color: green;
}
.active.downvote {
color: red;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="">
<a class="vote upvote" data-product_id="12" href="#">
<span class="fa fa-thumbs-up"></span>
</a>
<span class="vote_count">100</span>
<a class="vote downvote" data-product_id="12" href="#">
<span class="fa fa-thumbs-down"></span>
</a>
</div>
关于javascript - 在切换按钮 [Upvote/Downvote/unvote like SO] 之间的中心查找元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33047590/
如何在toggleClass之间找到这个元素。这是我到目前为止尝试过的。这是我的 JSFIDDLE http://jsfiddle.net/8rrctstf/12/ 我应该得到元素 vote_coun
我在我的 ruby 投票系统中使用 acts_as_votable。现在我可以投票/否决并更新计数器。但我想要的是投票,然后投票,然后再次投票,但我只能通过刷新来做到这一点。如果我投票然后反对票,
我是一名优秀的程序员,十分优秀!