非常简单的问题。为什么没有
<div class="plus-button" onclick="voteUp(' . $postid . ')" data-postid="' . $postid . '" name="like">+ ' . $voterow['totalupvotes'] . '</div>
使用
<script type="text/javascript">
function voteUp(postid){
var postid = postid;
$(this).siblings('.minus-button').removeClass('disliked');
$(this).toggleClass('liked');
$.ajax({
type:"POST",
url:"php/votesystem.php",
dataType : 'html',
data:'act=like&postid='+postid,
success: function(data){
$('.plus-button').html(data);
alert("Liked with id "+postid);
}
});
}
</script>
div行正常。问题是java / jq脚本中的$(this)不被识别为特定的div类。
我尝试过使用voteUp(this)并且没有让它工作。也尝试使用
var postid = $(this).data('postid');
但我的警告msg然后说未定义的id而不是它应该是什么id。
答案 0 :(得分:0)
删除onclick并使用jQuery获取postid
$(function() {
$(".plus-button").on("click",function() {
var postid = $(this).data("postid");
// $(this) is now the div clicked
$(this).siblings('.minus-button').removeClass('disliked');
$(this).toggleClass('liked');
.
.
答案 1 :(得分:-1)
而不是只调用voteUp(#postId)使用call方法,所以voteUp.call(this,#postID);
<div class="plus-button" onclick="voteUp.call(this, ' . $postid . ')" data-postid="' . $postid . '" name="like">+ ' . $voterow['totalupvotes'] . '</div>
你在这里基本上做的是你将函数的上下文或“this”变量从函数原型更改为div dom对象。更多信息可以在下面的文档中找到:)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call