我有一个onclick
事件将一个$(this)
参数传递给一个函数。将参数传递给jQuery中的单击事件
<tr class="myTr">
<td>
Han Solo
</td>
</tr>
<script>
$('body').on('click','.myTr',function(){
doSomething($(this));
});
</script>
现在,我想再添加一个步骤。我想显示一个按钮,点击此按钮后,应该调用doSomething()
。
<tr class="myTr">
<td>
Han Solo
</td>
</tr>
<button id="myBtn" style="display:none">Submit</button>
<script>
$('body').on('click','.myTr',function(){
$('#myBtn').show();
});
$('#myBtn').click(function(){
doSomething(???);
});
</script>
如何将$(this)
传递给第二次单击事件?
我可以很容易的$(this)
存储作为按钮的标签,像这样:
$('body').on('click','.myTr',function(){
$('#myBtn').attr('origin', $(this));
$('#myBtn').show();
});
$('#myBtn').click(function(){
var tr = $(this)attr('origin');
doSomething(tr);
});
但我不知道是否有解决这个更优雅的方式?
使用数据属性,而不是attr的。 '$('#myBtn')。data('origin',$(this));'和'$(this).data('origin');' – epascarello
使用全局变量? – Roljhon
其他选项是解除绑定并重新绑定click事件,更新脚本以使用带有闭包的变量。我会使用数据attr。 – epascarello