0

我有一个使用 twitter bootstrap 的类似链接。

 <a href="#"><i class="icon-thumbs-up"></i></a><span class="badge">${fn:length(page.likes)}</span>

  When the user clicks on like link the value within the span should be incremented.

由于我对每条评论都有一个赞按钮,因此我不知道如何从单个 javascript 执行此任务,因为我如何确定要更新哪个跨度。

还有一件事我有这个like按钮作为带有href="#"的超链接。所以页面跳到顶部eveytime 我点击了like 链接。知道如何解决问题。

4

3 回答 3

4

对于您的第二个问题,您可以使用 <a href="javascript:void(0)">

对于第一个问题,你的like按钮在哪里?您始终可以为每个跨度分配一个唯一的 id,然后单击类似按钮,您可以使用: document.getElementById("spanUiqueId").innerHTML = parseInt(document.getElementById("spanUiqueId").innerHTML)+1;

于 2013-03-02T21:17:08.693 回答
2

对于您现有的 dom 结构,只需

$('.icon-thumbs-up').parent('a').click(function() {
     var count = parseInt($('badge').text())+1;
     $('badge').text(count);
}

如果您想为 a 提供 id 或类,则将 $('.icon-thumbs-up').parent('a') 替换为任何新的选择器

这里需要说明两点:

首先: parseInt 确保传递数字以进行增量,这是推荐的方式,因为这可能会在 js 中创建静默错误,传递计数器的错误值 tu 文本并破坏您的页面

第二:我使用 +1 而不是 ++,因为 ++ 和 -- 往往不稳定,这取决于很多事情,所以我从不使用它们或只在 for 循环中使用它们。

于 2013-03-02T21:45:19.403 回答
0

您可以为此使用jQuery

使<a>标签有一个类,例如“likeLink”:

<a class="likeLink" href="#"><i class="icon-thumbs-up"></i></a><span class="badge">${fn:length(page.likes)}</span>
<script>
$("a.likeLink").click(function() {
    $(this).next().text($(this).next().text()+1);
});
</script>

$(this).next()获取元素的下一个兄弟元素,在本例中为<span>.

对于你的第二个问题,你想让like按钮做什么?如果您只是希望它显示为链接,则可以更改链接的“href”属性:

<a href="javascript:void('0')">

这不会做任何事情,但保持链接。

于 2013-03-02T21:19:27.953 回答