【问题标题】:jquery function for individual divs单个 div 的 jquery 函数
【发布时间】:2010-11-23 01:06:12
【问题描述】:

我认为这可以通过.prev() 函数实现,但由于某种原因它不起作用。

我正在为博客上的帖子创建拇指向上/向下按钮。我正在尝试根据用户投票显示消息。 UP 或 DOWN,但每当我对 1 个特定帖子进行投票时,所有帖子都会显示该消息。

这是我的代码。我删除了 prev() 尝试使其更具可读性。该脚本在 ajax 方面运行良好。

$(document).ready(function() {
    $(".vote_button").click(function(e) { //the UP or DOWN vote button
    var vote_status = $(this).attr('class').split(' ')[1]; //gets second class name following vote_button
    var vote_post_id = $(this).attr("id"); //the post ID
    var dataString = 'post_id=' + vote_post_id + '&vote_status=' + vote_status;

    $.ajax({
        type: "POST",
        url: "url/add_vote.php",
        data: dataString,
        cache: false,
        success: function(html) {
            if (vote_status == 1) 
         {
                $('.msg_box').fadeIn(200);
                $('.msg_box').text('You voted UP!');
            }
            if (vote_status == 2) 
         {
                $('.msg_box').fadeIn(200);
                $('.msg_box').text('You voted DOWN!');
            }
        }
    });
    return false;
});
});

示例 HTML

<div class="vote_button 1" id="18">UP</div>
<div class="vote_button 2" id="77">DOWN</div>
<div class="msg_box"></div>

<div class="vote_button 1" id="43">UP</div>
<div class="vote_button 2" id="15">DOWN</div>
<div class="msg_box"></div>


<div class="vote_button 1" id="11">UP</div>
<div class="vote_button 2" id="78">DOWN</div>
<div class="msg_box"></div>

编辑:提供没有 Ajax 部分的 jsfiddle http://jsfiddle.net/XJeXw/

【问题讨论】:

  • 您不应该将classid 属性设置为一个数字。它们不应该以数字开头。
  • 这是很好的信息。我会解决这个问题。

标签: javascript jquery function vote


【解决方案1】:

您需要在click 处理程序中保存对按钮的引用(例如var me = $(this);),然后在AJAX 处理程序中使用me.nextAll('.msg_box:first')

编辑Example

var me = $(this);   //The this will be different inside the AJAX callback

$.ajax({
    type: "POST",
    url: "url/add_vote.php",
    data: dataString,
    cache: false,
    success: function(html) {
        me.nextAll('.msg_box:first')
            .text(vote_status == 1 ? 'You voted UP!' : 'You voted DOWN!')
            .fadeIn(200);
    }
});

【讨论】:

  • Slaks 完美运行!太感谢了!我一定会记住您的代码以供将来的脚本使用。我也很欣赏 if 语句的修订。额外的菜鸟问题:您将 var 命名为“me”有什么特别的原因吗?
  • @Cyber​​: No. selfthat 也很常见。出于(希望)显而易见的原因,this 不是一个选项。
猜你喜欢
  • 1970-01-01
  • 2018-05-09
  • 2017-10-13
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
相关资源
最近更新 更多