我正在制作一个小小的wordpress插件"评价我的任何"。这个插件适用于单个帖子,但在博客页面上有多个帖子,插件无法看到点击已完成的帖子ID。它始终需要页面的第一个值。
我已经在id和类名中添加了帖子ID以解决问题(例如:post_id $ post-> ID),但现在我以这种方式阻止编辑jquery文件。
投票后项目的PHP代码:
<input type=\"hidden\" id=\"post_id$post->ID\" value=\"" . $post->ID . "\" />
<div class=\"vote\">
<table>
<tr><td>
<a class=\"vote_up\" href=\"#\"></a></td>
<td>
<a class=\"vote_down\" href=\"#\"></a></td></tr>
<tr>
<td class=\"up_perc$post->ID\">" . get_percentage(1, $post->ID ) ."%</td>
<td class=\"down_perc$post->ID\">" . get_percentage(2, $post->ID) . "% </td>
</tr>
</table></div>
<div class=\"vote_succ$post->ID\"></div>
jquery代码(投票结果,投票结果大致相同):
jQuery(document).ready(function($) {
$(".vote_up").click(function(e) {
e.preventDefault();
$.post('/wp-content/plugins/rate-my-whatever/rate.php', {vote_type: "1", post_id: $("#post_id1").val()}, function(data) {
$(".vote_succ1").html(data);
$.post('/wp-content/plugins/rate-my-whatever/rate.php', {action: "getPercentage", vote_type: "1", post_id: $("#post_id1").val()}, function(data2) {
$(".up_perc1").html(data2);
});
$.post('/wp-content/plugins/rate-my-whatever/rate.php', {action: "getPercentage", vote_type: "2", post_id: $("#post_id1").val()}, function(data3) {
$(".down_perc1").html(data3);
});
});
});
我静静地放了#34; 1&#34;在一些id和class元素之后检查我的问题将如何解决,它适用于Post 1,id和value是&#34; 1&#34;,现在我需要替换&#34; 1&#34;在#post_id,.vote_succ,.up_perc,.down_perc的末尾通过动态代码使其与php代码生成的动态元素一起工作。
感谢您的帮助。
答案 0 :(得分:2)
您需要更改代码,使其在单击的单元上运行,而不是在整个页面中该类的所有对象上运行。最简单的方法是将每个单元放在一个像这样的容器div中,只使用类名,没有ID值:
<div class=\"voteUnit\">
<input type=\"hidden\" class=\"post_id\" value=\"" . $post->ID . "\" />
<div class=\"vote\">
<table>
<tr>
<td><a class=\"vote_up\" href=\"#\"></a></td>
<td><a class=\"vote_down\" href=\"#\"></a></td>
</tr>
<tr>
<td class=\"up_perc\">" . get_percentage(1, $post->ID ) ."%</td>
<td class=\"down_perc\">" . get_percentage(2, $post->ID) . "% </td>
</tr>
</table>
</div>
<div class=\"vote_succ\"></div>
</div>
然后,更改代码,找到相同的投票单元中的相关对象,使用$(this).closest('.voteUnit').find()
查找单击的投票单元中的对象,而不是查看整个网页在所有投票单位中查找对象。 .closest('.voteUnit')
从点击的项目中查找祖先链,直到找到具有class=voteUnit
的父级。然后,代码可以使用它作为子树来搜索投票单元中的其他对象。
jQuery(document).ready(function($) {
$(".vote_up").click(function(e) {
var unit$ = $(this).closest('.voteUnit');
e.preventDefault();
$.post('/wp-content/plugins/rate-my-whatever/rate.php', {vote_type: "1", post_id: unit$.find(".post_id").val()}, function(data) {
unit$.find(".vote_succ").html(data);
$.post('/wp-content/plugins/rate-my-whatever/rate.php', {action: "getPercentage", vote_type: "1", post_id: unit$.find(".post_id").val()}, function(data2) {
unit$.find(".up_perc").html(data2);
});
$.post('/wp-content/plugins/rate-my-whatever/rate.php', {action: "getPercentage", vote_type: "2", post_id: unit$.find(".post_id").val()}, function(data3) {
unit$.find(".down_perc").html(data3);
});
});
});