点击一些div后如何在jQuery函数中更新'id'?

时间:2018-02-04 21:03:50

标签: javascript jquery html css variables

我想简单描述一下我的情况。

第1步:我想在每次点击某个div后将变量“count”增加1。

第二步:我想对我的其他函数使用更新的“count”,其中我从select元素中复制值,其id属性包含在其id结尾处更新的“count”到输入元素,其中id属性也包含更新的“count” “在其身份的最后。

问题:更新的“count”在函数内部顺利运行,我将值从select复制到输入,但不是在我使用bind()的第一个#id选择器中。这里,“计数”保持不变为“0”。它导致正确输入元素的值仍由错误的select元素更新,其id为“0”。

有人可以告诉我如何使用我的变量来解决这种情况吗?

        $(document).ready(function () {

        var count= 0;
        $("#clickBtn").on("click", function (event) {
            event.preventDefault();
            var textBox = document.getElementById("text");
            textBox.value = count;
            count++;
        });  

        $('#selectElmnt' + count).bind('change click keyup', function () {
            $('#inputElmnt' + count).val($(this).val());
        });
    });

1 个答案:

答案 0 :(得分:1)

$("#clickBtn").on("click", function (event)$('#selectElmnt' + count).bind函数都在页面加载时运行($(document).ready(),此时count 的值为零

我不太清楚你想用第二个功能实现什么 - 如果你想将一个更改/点击/键盘事件绑定到具有各种ID的所有选择,你可以在开始时这样做如果您想根据当前计数触发某些内容,则需要在单击回调中执行此操作。

例如,如果要将值从select1复制到input1,请选择2到input2,然后您不必担心计数。为此,您可以将计数添加为数据元素并添加一个类,以提供如下标记:

<select id="selectElmnt1" class="selectElmnt" data-count="1">...</select>
<select id="selectElmnt2" class="selectElmnt" data-count="2">...</select>
<select id="selectElmnt3" class="selectElmnt" data-count="3">...</select>

然后使用以下javascript:

$(document).ready(function () {
    var count= 0;
    $("#clickBtn").on("click", function (event) {
        event.preventDefault();
        var textBox = document.getElementById("text");
        textBox.value = count;
        count++;
    });  

    $('.selectElmnt').on('change click keyup', function () {
        var count_id = $(this).data('count');
        $('#inputElmnt' + count_id).val($(this).val());
    });
});

但是,如果您想根据按钮触发某些内容,则需要以下内容:

$(document).ready(function () {
    var count= 0;
    $("#clickBtn").on("click", function (event) {
        event.preventDefault();
        var textBox = document.getElementById("text");
        textBox.value = count;
        count++;
        // Trigger stuff here.  probably not bind, maybe just copy value now?
        $('#inputElmnt' + count_id).val( $('.selectElmnt' + count).val() );
    });         
});