在java / jq函数中使用Onclick和$(this)

时间:2014-09-01 06:40:32

标签: javascript jquery

非常简单的问题。为什么没有

<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。

2 个答案:

答案 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