Javascript 如果在jQuery中单击id向上/向下,则增加/减少跨度的数值,并删除链接的类
我用它在我的帖子上显示投票系统 我首先检查用户是否没有登录,如果他没有,并且他在帖子上投票,我想向他显示一个我已经实现的警报 但是,我还想根据用户单击的按钮删除类Javascript 如果在jQuery中单击id向上/向下,则增加/减少跨度的数值,并删除链接的类,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我用它在我的帖子上显示投票系统 我首先检查用户是否没有登录,如果他没有,并且他在帖子上投票,我想向他显示一个我已经实现的警报 但是,我还想根据用户单击的按钮删除类upvote on和downovote on,并且我想将投票.count重置为其原始状态。如果帖子有2个点,并且用户单击了upvote,那么这个数字会自动增加到3,我想通过减小它的值将其恢复到2。如果他点击了下一票,这个数字会自动下降,这里我想把它增加1,恢复到原来的状态 我也只想这样做一次。因为据我所见,只要用户一直单击投票按钮(注销
upvote on
和downovote on
,并且我想将投票.count
重置为其原始状态。如果帖子有2个点,并且用户单击了upvote
,那么这个数字会自动增加到3,我想通过减小它的值将其恢复到2。如果他点击了下一票,这个数字会自动下降,这里我想把它增加1,恢复到原来的状态
我也只想这样做一次。因为据我所见,只要用户一直单击投票按钮(注销时),它就会不断增加/减少数字
这是HTML标记
<div class="upvote topic" data-post="{{ $post->id }}">
<a id="up" class="upvote vote {{ $post->votes && $post->votes->contains('user_id', Auth::id()) ? ($post->votes->where('user_id', Auth::id())->first()->value > 0 ? 'upvote-on' : null) : null}}" data-value="1" data-post-id="{{ $post->id }}"></a>
<span class="count">{{ $post->votes->sum('value') }}</span>
<a id="down" class="downvote vote {{ $post->votes && $post->votes->contains('user_id', Auth::id()) ? ($post->votes->where('user_id', Auth::id())->first()->value < 0 ? 'downvote-on' : null) : null}}" data-value="-1" data-post-id="{{ $post->id }}"></a>
</div>
然后,我尝试进一步检查是否单击了id#up
或#down
,但没有产生任何结果。未删除类,数值变为NaN
$.get( "http://localhost/r2/public/data/islogged", function(data)
{
data.status == false ? console.log('not logged in') : console.log('logged in');
$('.vote').on('click', function (e) {
e.preventDefault();
var $button = $(this);
var postId = $button.data('post-id');
var value = $button.data('value');
if(data.status == false) {
sweetAlert("Oops...", "You are not logged in!", "error");
$("#up").click(function() {
$('a.upvote').removeClass('upvote-on');
$(".count").text(Number($(".count").text()) - 1);
});
$("#down").click(function() {
$('a.downvote').removeClass('downvote-on');
$(".count").text(Number($(".count").text()) + 1);
});
} else {
$.post('http://localhost/r2/public/votes', {postId:postId, value:value}, function(data) {
// success here
}).fail(function() {
sweetAlert("Oops...", "Something went wrong...", "error");
}, 'json');
}
});
我该怎么做呢?有更好的办法吗
更新
我对代码做了一点修改,但仍然不起作用。类甚至不会被删除。好像('click')不存在
$('.upvote .vote').on('click', function (e) {
e.preventDefault();
$('a.upvote').removeClass('upvote-on');
$('span.count').val(parseInt($('span.count').val()) - 1);
});
$('.downvote .vote').on('click', function (e) {
e.preventDefault();
$('a.downvote').removeClass('downvote-on');
$(".count").text(Number($(".count").text()) + 1);
});
用户登录时无法访问此代码,因为它位于if(data.status==false)
请尝试使用
parseInt($(“.count”).text()
而不是Number()
我知道,这应该仅在用户未登录时显示。此检查方法无效,无法识别$(“#up”)。请单击()
。而且parseInt
也不起作用。
$('.upvote .vote').on('click', function (e) {
e.preventDefault();
$('a.upvote').removeClass('upvote-on');
$('span.count').val(parseInt($('span.count').val()) - 1);
});
$('.downvote .vote').on('click', function (e) {
e.preventDefault();
$('a.downvote').removeClass('downvote-on');
$(".count").text(Number($(".count").text()) + 1);
});
$("#up").click(function() {
$('a.upvote').removeClass('upvote-on');
$(".count").text(Number($(".count").text()) - 1);
});
$("#down").click(function() {
$('a.downvote').removeClass('downvote-on');
$(".count").text(Number($(".count").text()) + 1);
});