Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在第一次单击后禁用链接,并仅在登录时允许用户投票_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 如何在第一次单击后禁用链接,并仅在登录时允许用户投票

Javascript 如何在第一次单击后禁用链接,并仅在登录时允许用户投票,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我正在wordpress中开发一个插件,使用ajax对帖子投赞成票或反对票。 一切正常,但问题是我无法在第一次单击后禁用onclick eventhandler,因此每当有人对帖子进行投票时,他可以多次添加投票。我想忽略这一点,所以我只能投票一次。如果我点击vote up,那么voteup锚定标签应该是禁用的,votedown锚定标签应该是启用的。同时,如果我点击votedown锚标记,那么votedown应该是禁用的,voteup应该是启用的。另外,我只想在用户登录wordrpess时启用投票

我正在wordpress中开发一个插件,使用ajax对帖子投赞成票或反对票。 一切正常,但问题是我无法在第一次单击后禁用
onclick eventhandler
,因此每当有人对帖子进行投票时,他可以多次添加投票。我想忽略这一点,所以我只能投票一次。如果我点击vote up,那么voteup锚定标签应该是禁用的,votedown锚定标签应该是启用的。同时,如果我点击votedown锚标记,那么votedown应该是禁用的,voteup应该是启用的。另外,我只想在用户登录wordrpess时启用投票功能

如果用户未登录,我有一个显示弹出窗口的功能。 i、 e
login_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相同,你理解我的问题吗