我正在修改插件以允许用户对帖子进行投票。我的页面看起来像这样(虽然这当然是简化的):
<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>
我很抱歉,如果这是一个简单的问题,但我一直在努力弄清楚两天没有运气;提前感谢您的帮助。
答案 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/)