jQuery在单击和替换时附加值

时间:2018-08-06 19:06:39

标签: javascript jquery

我正在尝试将function ShowReversalsDetailedView() { $.ajax( { url: "/MyController/RedirectToView/", type: 'post', dataType: "html", contentType: 'application/json; charset=utf-8', success: function (result) { $(".modal-content").html(result); } }) } 文本附加到Kendo().Window(),但只显示每个button下最后单击的span的值。

因此,无论单击了什么button文本,都将其.item button并用下一个按下的append文本替换该值,依此类推。

span
button

3 个答案:

答案 0 :(得分:3)

我会像这样构造您的html,然后指定范围并使用.text()更新它。我在<span>标记内使用了<p>,因为如果您尝试更新整个span标记,它也会删除total:文本。我还通过删除var x = $(this).closest(".item");来对jquery进行了一些修整,因为在这种情况下我们不需要它(不确定其中的作用)。

$('#value span').text(y);

$('.button').on('click', function() {
  var y = $(this).text();
  $('#value span').text(y);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="list">
  <div class="item">
    <div>Item 1</div>
    <button class="button">50</button>
  </div>
  <div class="item">
    <div>Item 2</div>
    <button class="button">30</button>
  </div>
  <div class="item">
    <div>Item 3</div>
    <button class="button">70</button>
  </div>
</div>
<p id="value">Total: (<span>0</span>)</p>

答案 1 :(得分:2)

问题:

您要jQuery执行的操作是为每个对象的文本值附加一个'.button'类,因为所有三个按钮都具有该类,因此无论哪个按钮,您都将获取每个按钮的文本值单击。

解决方案:

使用“ this”关键字!在点击侦听器的上下文中,“ this”关键字将引用触发事件的控件。换句话说,被单击的控件。现在,每次点击只会附加一个按钮的值。

例如:

$(".list").on("click", ".button", function () {
    var y = $(this).text();
    $('#value').append('(' + y + ')');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="list">
        <div class="item">
            <div>Item 1</div>
            <button class="button">50</button>
        </div>
        <div class="item">
            <div>Item 2</div>
            <button class="button">30</button>
        </div>
        <div class="item">
            <div>Item 3</div>
            <button class="button">70</button>
        </div>
    </div>
    <span id="value">Total:</span>

希望有帮助!

** -EDIT- **

要在每次单击时替换该值,您想使用.text()方法将值插入到控件的text属性中。由于您当前有“总计”,因此您还需要以编程方式将其插入,或者像我一样将其移动到span元素之外。

$(".list").on("click", ".button", function () {
    var y = $(this).text();
    // Use .text instead of .append.
    $('#value').text('(' + y + ')');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="list">
        <div class="item">
            <div>Item 1</div>
            <button class="button">50</button>
        </div>
        <div class="item">
            <div>Item 2</div>
            <button class="button">30</button>
        </div>
        <div class="item">
            <div>Item 3</div>
            <button class="button">70</button>
        </div>
    </div>
    <div>Total: <span id="value"></span></div>

答案 2 :(得分:0)

也许只是替换

$('#value').append('(' + y + ')');

使用

$('#value').html('(Total:' + y + ')');