将data属性设置为button并查看所述attr jquery的值

时间:2015-09-22 06:45:46

标签: javascript jquery html

DEMO

$(document).ready(function () {
    $(document).on('click', '.btn1', function (e) {
        var qwe = $(this).data('id');
        var asd = $(this).data('table');
        console.log(qwe);
        $('#btn2').attr('data-id', qwe);
        $('#btn2').click();

    });
    $("#btn2").click(function (e) {
        e.preventDefault();
        var q = $(this).data('id');
        var a = $(this).data('table');
        console.log(q);
        func1(q, a);
    });
});

function func1(data, value) {
    $('#text').val(data);
}

我这里有3个按钮;即btn1,btn1.1,btn2。 btn1和btn1.1共享同一个类btn1我在类btn1上有一个click事件。在btn1点击事件中,我使用data-id获取btn' $(this).data('id');然后我在btn2中将其设置为与此$('#btn2').attr('data-id', qwe);相同的attr。点击btn2后,我运行一个设置输入值的函数。

我的问题是这样的,当我点击btn1时,data-id被传递到btn2我可以看到它在开发工具中发生了变化。当我再次在btn1.1中单击时,data-id仍然传递到dev工具中的btn2,但它在输入val中没有变化。

为什么会这样。如何解决这个问题?

UPDATED FIDDLE

更新了btn2中点击事件的小提琴检查

2 个答案:

答案 0 :(得分:4)

<强> DEMO

使用data()本身使用以下内容设置值。

$('#btn2').data('id', qwe);

您无法使用attr()来设置data,因为data-id不是元素的有效属性。

但是,如果您使用prop()代替attr(),那么它就可以使用。

$('#btn2').prop('data-id', qwe);

答案 1 :(得分:0)

现在请运行以下代码段,一旦您能够看到更新的Btn2数据值,就可以减少延迟时间。

由于

&#13;
&#13;
$(document).ready(function () {
    $(document).on('click', '.btn1', function (e) {
        var qwe = $(this).data('id');
        var asd = $(this).data('table');
        
        $('#btn2').attr('data-id', qwe);
        
        setTimeout(function(){
          $('#btn2').click();
        }, 2000); 
    });
  
    $("#btn2").click(function (e) {
        e.preventDefault();
        var q = $(this).data('id');
        var a = $(this).data('table');
        func1(q, a);
    });
});

function func1(data, value) {
    $('#text').val(data);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="button" value="Btn 1" data-table="btn 1 table val" data-id="btn 1 id val" class="btn1" />
<input type="button" value="Btn 2" id="btn2" />
<input type="text" value="" size="50" id="text" />
&#13;
&#13;
&#13;