使用jQuery和.load()刷新多个div- [unique_ID]?

时间:2011-06-01 23:02:30

标签: jquery ajax load

我正在修改插件以允许用户对帖子进行投票。我的页面看起来像这样(虽然这当然是简化的):

<div class="vote vote1">
//voting buttons
</div>

<div class="vote vote2">
//voting buttons
</div>

<div class="vote vote3">
//voting buttons
</div>

<div class="vote vote4">
//voting buttons
</div>

如您所见,每个投票div都有一个与之关联的唯一类,投票[id]。我的麻烦是,在将投票提交到我的vote.php文件之后,我需要使用新数据刷新这个独特的投票div。当我将特定的投票div的唯一ID硬编码到.load()中时,我已经能够毫无困难地执行此操作,但我似乎无法使用单个脚本动态地为所有投票div 工作。有人能够帮助我刷新已被点击的独特投票div吗?

<script type="text/javascript">
jQuery(document).ready(function(){
$(".vote a.can-vote").click(
    function() {
        var some = jQuery(this).parent();
        var thepost = jQuery(this).attr("post");
        var theuser = jQuery(this).attr("user");
        var updown = jQuery(this).attr("up-down");
        var is_update = jQuery(this).attr("update");
        var votebox = ".vote"+thepost+" span";

        jQuery.ajax({
            type: "POST",
            url: "<?php bloginfo('template_url'); ?>/vote.php",
            data: {user: theuser, post: thepost, up_down: updown, update: is_update},
            cache: false,
            success: function( data ){
                jQuery(some).load('http://mydomain.com div.vote[ID]');
            }
        });
        return false;
    });
}); 
</script>

我很抱歉,如果这是一个简单的问题,但我一直在努力弄清楚两天没有运气;提前感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

如果我理解得很好:你可以做一个'离线'技巧。
只需使用jQuery增加投票数,就像在此Ex:

中一样
var voted = 0;
$('.vote').attr('value', function() {
voted++;
return voted;
}); 

更改将在浏览器中进行。 总是在页面刷新时,你将从数据库中恢复真实状态。

答案 1 :(得分:0)

嗯......你可以通过正则表达式找到“ID”类:

$(".vote a.can-vote").click(
    function() {
        var some = jQuery(this).parent();
        var keyClass = some.attr('className').replace(/^.*(vote\d+).*$/, '$1');

然后您的“.load()”可以:

          jQuery(some).load('http://mydomain.com div.' + keyClass);

您也可以考虑为<div>元素提供实际的“id”值。那会让事情变得容易些。

答案 2 :(得分:0)

我的猜测是你正在使用“jQuery()” - 选择器而不是$() - 选择器,以避免与页面上的其他Javascript库发生冲突。然而,您之前使用$ -selector('。vote a.can-vote')而不是jQuery() - 替代方案。这可能是您的脚本执行不良的原因。

您可以使用noConflict()函数来使用常规$ -selector。 (http://api.jquery.com/jQuery.noConflict/