如何在javascript中将我的变量附加到我的类?

时间:2013-10-19 13:38:37

标签: javascript php

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

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

希望我能解释我的问题好了,先谢谢詹姆斯。

2 个答案:

答案 0 :(得分: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 ...."。这样,您的输入将有两个类:

  • 正常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();
}
}

答案 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();
}