Jquery 在事件触发器上传递并存储动态变量

标签 jquery events variables dynamic

输入文本框旁边有一个复选框。如果选中该复选框,则文本框将被清空并禁用。但是,我想将之前的值存储在该文本框中,以便如果用户决定取消选中该复选框,该值将返回到文本框。这是我的代码:

function disablePath() {
    var currentPath;
    $('#user_strategy').on('change','input[value="all"]', function(){
        var that = $(this);
        if($(this).is(':checked')) {
            currentPath = that.next().val();
            that.next().attr("disabled", "disabled").val('');
        }
        else {
            that.next().removeAttr("disabled").val(currentPath);
        }
    });
}

因此,如果我只有一个复选框,后跟一个文本框,那么效果非常好。如果我有多个复选框-文本框组合,我就会遇到麻烦,我就是这么做的。如果我选中多个复选框,则仅存储最后一个文本框内容 - 因此,如果我取消选中任何先前选中的框,则相应的文本框将填充为选中相关复选框的最后一个文本框的值,无论关系如何。有没有办法存储特定于前一个复选框的文本框的值?这是实时代码:

http://kaboukie.net/stackoverflow/

我相信我需要使用 eventData,但不确定如何使用,任何帮助将不胜感激!

最佳答案

我建议将数据附加到元素本身,这可以使用 Jquery 的 .data() 方法来完成。

这是代码,我已经测试过它可以正常工作;)

$(function() {
    function disablePath() {
        var currentPath;
        $('#user_strategy').on('change','input[value="all"]', function(){
            var that = $(this);
            if($(this).is(':checked')) {
                temp= that.next().val();
                that.data("currentPath" , temp);
                that.next().attr("disabled", "disabled").val('');
            }
            else {
                that.next().removeAttr("disabled").val(that.data("currentPath"));
            }
        });
    }
    disablePath();
}); 

关于Jquery 在事件触发器上传递并存储动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640761/

相关文章:

html - 获取 AJAX 加载内容的 DIV ID

javascript - 如何编写一个简单的自定义js插件

javascript - 来自单个元素的 Jquery off 事件

c++ - 变量声明对程序效率的重要性

Java 语法 : Why does this variable declaration work?

jquery - 如何在 Slick Carousel onBeforeChange 中检测滑动方向?

jquery - 使用 jquery 获取输入字段的 id 以传回颜色变化

c# - C#中的分组事件

c# - winforms中拦截OnKeyPress事件后OnKeyUp不触发

python - 从 SPSS 中的所有变量名称中去除前缀