0

所以我已经坚持了一段时间了,似乎无法获得正确的语法。

我有一个 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 中的计数并且工作正常。

希望我能解释我的问题,提前感谢詹姆斯。

4

2 回答 2

1

以及据我从您的 HTML 中看到的,您没有类似的元素。如果你想定位表单的所有类like1like2...,你想选择: 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 ....". 这样,您的输入将有 2 个类:

  • 一个普通的like班级
  • 和一个独特的like1like2...等类

因此,如果您只使用当前的 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();
}
}
于 2013-10-19T13:46:37.360 回答
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();
}
于 2013-10-19T15:37:05.643 回答