Javascript 如何在第一次单击后禁用链接,并仅在登录时允许用户投票
我正在wordpress中开发一个插件,使用ajax对帖子投赞成票或反对票。 一切正常,但问题是我无法在第一次单击后禁用Javascript 如何在第一次单击后禁用链接,并仅在登录时允许用户投票,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我正在wordpress中开发一个插件,使用ajax对帖子投赞成票或反对票。 一切正常,但问题是我无法在第一次单击后禁用onclick eventhandler,因此每当有人对帖子进行投票时,他可以多次添加投票。我想忽略这一点,所以我只能投票一次。如果我点击vote up,那么voteup锚定标签应该是禁用的,votedown锚定标签应该是启用的。同时,如果我点击votedown锚标记,那么votedown应该是禁用的,voteup应该是启用的。另外,我只想在用户登录wordrpess时启用投票
onclick eventhandler
,因此每当有人对帖子进行投票时,他可以多次添加投票。我想忽略这一点,所以我只能投票一次。如果我点击vote up,那么voteup锚定标签应该是禁用的,votedown锚定标签应该是启用的。同时,如果我点击votedown锚标记,那么votedown应该是禁用的,voteup应该是启用的。另外,我只想在用户登录wordrpess时启用投票功能
如果用户未登录,我有一个显示弹出窗口的功能。
i、 elogin_open()代码>
如果用户未登录并尝试投票,则此函数应执行login_open()代码>
否则,用户只能进行一次投票或否决
这是我的密码//
php
//用于添加投票的HTML
<div class="voter">
<a onclick="votemeaddvote(<?php echo $post_ID; ?>);">VoteUp</a>
<a onclick="votemedownvote(<?php echo $post_ID; ?>)">Vote Down</a>
</div>
因此,您可以做的是更改一些代码
将html更改为:
<div class="voter">
<a data-id="<?php echo $post_ID; ?>">VoteUp</a>
<a data-id="<?php echo $post_ID; ?>">Vote Down</a>
</div>
因此,var data get具有要发送的json格式的post id。
使用“this”,您可以将此特定元素作为目标并将其打开单击关闭。我删除了嵌入的点击事件,因为通常您希望引导这些触发器,以便可以关闭它们,这是您的问题。
可以通过使用jquery.on和.off方法来实现这一点
编辑:忘记添加函数调用。我加上去了。我还将添加votedown的工作方式:
$(".voter a:last-child").on( "click", function() {
console.log("click");
var data = $(this).data();
console.log(data);
votemedownvote(data.id);
$(this).off();
});
编辑2:哦,我忘了提到这只适用于前端。因此,在后端,您需要某种方法来跟踪此人是否投票,可能是一个包含用户id、post id和投票为真或假的表。这样,您可以在ajax调用时跟踪它,并让php更新数据库
因此,您可以做的是更改一些代码
将html更改为:
<div class="voter">
<a data-id="<?php echo $post_ID; ?>">VoteUp</a>
<a data-id="<?php echo $post_ID; ?>">Vote Down</a>
</div>
因此,var data get具有要发送的json格式的post id。
使用“this”,您可以将此特定元素作为目标并将其打开单击关闭。我删除了嵌入的点击事件,因为通常您希望引导这些触发器,以便可以关闭它们,这是您的问题。
可以通过使用jquery.on和.off方法来实现这一点
编辑:忘记添加函数调用。我加上去了。我还将添加votedown的工作方式:
$(".voter a:last-child").on( "click", function() {
console.log("click");
var data = $(this).data();
console.log(data);
votemedownvote(data.id);
$(this).off();
});
编辑2:哦,我忘了提到这只适用于前端。因此,在后端,您需要某种方法来跟踪此人是否投票,可能是一个包含用户id、post id和投票为真或假的表。这样,您可以在ajax调用时跟踪它,并让php更新数据库
简单地使用而不是
试试这样的
$(".voter a:last-child").one( "click", function() {
console.log("click");
var data = $(this).data();
console.log(data);
votemedownvote(data.id);
});
简单地使用而不是
试试这样的
$(".voter a:last-child").one( "click", function() {
console.log("click");
var data = $(this).data();
console.log(data);
votemedownvote(data.id);
});
我还使用ajax将值更新到wordpress数据库,如何在没有onclick事件的情况下执行这些函数。我怎样才能检查哪个按钮被点击了。@HarmanPreet你试过a为你写的代码了吗?或者读我的答案?@HarmanPreet如果你看我的小提琴,你可以看到功能是如何工作的。只需在jquery中发生单击事件的地方添加函数调用即可。它可以工作,但有一个问题是,如果单击按钮,我希望激活AlerActive按钮。就像我点击addvote一样,点击后它应该被禁用,第二个应该被启用如果我点击downvote,那么addvote按钮应该再次被激活,反之亦然,当第一个链接被点击时,你可以禁用它并启用第二个或者你想怎么做。一切都在那里。我不打算全部为你写。您可以从我提供的功能中获得该功能。我还使用ajax将值更新到wordpress数据库,如何在没有onclick事件的情况下执行这些功能。我怎样才能检查哪个按钮被点击了。@HarmanPreet你试过a为你写的代码了吗?或者读我的答案?@HarmanPreet如果你看我的小提琴,你可以看到功能是如何工作的。只需在jquery中发生单击事件的地方添加函数调用即可。它可以工作,但有一个问题是,如果单击按钮,我希望激活AlerActive按钮。就像我点击addvote一样,点击后它应该被禁用,第二个应该被启用如果我点击downvote,那么addvote按钮应该再次被激活,反之亦然,当第一个链接被点击时,你可以禁用它并启用第二个或者你想怎么做。一切都在那里。我不打算全部为你写。您可以从我提供的内容中派生出该功能。@CodeZombie,是否可以取消替代链接,或者反之亦然。当我点击addvote时,它应该工作并被禁用,如果我点击downvote,它应该工作并被禁用,但是之前被禁用的addvote应该再次被启用,并且与downvote相同,你明白我的意思吗problem@CodeZombie,是否可以取消替代链接,反之亦然。当我点击addvote时,它应该工作并被禁用,如果我点击downvote,它应该工作并被禁用,但是之前被禁用的addvote应该再次被启用,并且与downvote相同,你理解我的问题吗