使用大量部分视图动态更改文本

时间:2017-08-28 12:10:31

标签: javascript jquery html razor

很抱歉这个标题可能听起来像一个菜鸟问题,但我真的不知道任何有点javascript。

让我解释一下。我试图建立一个声誉系统。所以我上下按钮,中间有数字。因此,当用户按下按钮时,它将禁用该按钮,并从该号码中添加或删除1。

现在更改数字是基本的,我可以找到任何地方,但永远告诉我使用id。但我不能使用id因为它不会是唯一的,因为我使用这个代码多次,我不知道多少次。 这是按钮的代码

<div class="row">
                <button type="button" class="btn-xs btn-link reputation-buttons" onclick="location.href='@Url.Action("MessageReputationUp", "Forum", new { groupId = Model.GroupId, threadId = Model.ThreadId, messageId = Model.Id })';return false;">
                    <span class="glyphicon glyphicon-arrow-up"></span>
                </button>
                <div> <text id="ReputationCount" style="padding-left:2px;">&nbsp; @Model.Reputation.ToString()</text></div>
                <button type="button" class="btn-xs btn-link reputation-buttons" onclick="location.href='@Url.Action("MessageReputationDown", "Forum", new { groupId = Model.GroupId, threadId = Model.ThreadId, messageId = Model.Id })';return false;">
                    <span class="glyphicon glyphicon-arrow-down"></span>
                </button>
            </div>

所以当我按下时,id =信誉计数器的文本需要改变。现在它变得有点复杂了。按下按钮后需要禁用按钮,但按下按钮需要重新按下。但是如果我能看到一个解决这个问题的基本例子,那我就可以搞清楚了。

1 个答案:

答案 0 :(得分:1)

您可以使用javascript classes。类有点像id,但对于N个元素。

  1. 将每个投票结构包裹在一个div中。
  2. 在upvoting / downvoting时,获取内部div的当前文本,将其转换为整数,添加或减去1并使用更新的值更改文本。您可以启用/禁用按钮或任何您想要执行的操作。

    $(document).on('click', '.votes_manager', function() {
        var elem = $(this).parent().children('.displayer');
        var value = parseInt(elem.text());
        if ($(this).hasClass('increase')) {
          ++value;
        }
        else {
          --value;
        }
        elem.text(value);
    });
    
  3. 选中JSFiddle

    PS:此解决方案使用jQuery