所以我现在已经坚持了一段时间,似乎无法获得正确的语法。
我有一个While循环,它成功地遍历了几个元素,直到达到某种形式。
我正在尝试在while循环中使每个表单具有不同的(唯一的)类ID,此刻我只是使用附加到onclick和类的简单计数。
onclick然后运行JS,我只是努力为JS中的类添加唯一计数,希望我的代码会解释更多。
JS
function hidelike(t) {
if ($(".like").is(':visible')) {
$(".like").hide();
$(".unlike").show();
$(".dislike").hide();
} else {
$(".like").show();
$(".unlike").hide();
$(".dislike").show();
}
}
HTML
<form class="likesubmit<?php echo $like_count;?>">
<input type="button" class="like<?php echo $like_count;?>" value="Like" onclick="hidelike(<?php echo $like_count;?>)">
</form>
我已经定义了计数,所以这不是问题,我也提醒了JS中的计数,并且工作正常。
希望我能解释我的问题好了,先谢谢詹姆斯。
答案 0 :(得分:1)
就我从你的HTML中看到的那样,你没有类似的类的元素。
如果您要定位表格like1
,like2
...的所有类,您要选择:
http://api.jquery.com/attribute-starts-with-selector/
if ($('input[class^="like"]').is(':visible')) {
或按值
if ($('input[value="Like"]').is(':visible')) {
上述两种方法都不理想 您真正想要做的是为您要定位的输入添加一个额外的唯一类。
这次在你的PHP中:
<form class="likesubmit<?php echo $like_count;?>">
<input type="button" class="like like<?php echo $like_count;?>" value="Like" onclick="hidelike(<?php echo $like_count;?>)">
</form>
注意class="like like<?php ...."
。这样,您的输入将有两个类:
like
类like1
,like2
...等级因此,如果您只使用当前的JS,它将起作用
更新:你的JS错了。当您单击任何按钮
时,您正在选择所有喜欢,不喜欢等按钮你需要的是:
PHP (为所有按钮添加额外的数字属性(也为不喜欢等))
<form class="likesubmit<?php echo $like_count;?>">
<input type="button" class="like like<?php echo $like_count;?>" number="<?php echo $like_count; ?>" value="Like" onclick="hidelike(<?php echo $like_count;?>)">
</form>
JS (使用数字属性)
function hidelike(t) {
if ($(".like" + t).is(':visible')) {
$(".like" + t).hide();
$(".unlike" + t).show();
$(".dislike" + t).hide();
} else {
$(".like" + t).show();
$(".unlike" + t).hide();
$(".dislike" + t).show();
}
}
答案 1 :(得分:0)
您也可以在此处使用data
属性。
<input class="like" data-id="<?= $like_count?>" onclick="hidelike(this)" />
然后你可以提取属性,如果你真的需要它或只是隐藏元素。
function hideLike(elem) {
var $elem = $(elem);
var id = $elem.data('id');
$elem.hide();
$('input.like[data-id='+id+']').hide();
}