$(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中没有变化。
为什么会这样。如何解决这个问题?
更新了btn2中点击事件的小提琴检查
答案 0 :(得分:4)
<强> DEMO 强>
使用data()
本身使用以下内容设置值。
$('#btn2').data('id', qwe);
您无法使用attr()
来设置data
,因为data-id
不是元素的有效属性。
但是,如果您使用prop()
代替attr()
,那么它就可以使用。
$('#btn2').prop('data-id', qwe);
答案 1 :(得分:0)
现在请运行以下代码段,一旦您能够看到更新的Btn2数据值,就可以减少延迟时间。
由于
$(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;