请帮帮我。 我有一个表单,其中包含多个文本输入,这些输入具有不同的ID,但下面的类相同
<input id="user_1" type="text" class="user-list" />
<input id="user_2" type="text" class="user-list" />
<input id="user_3" type="text" class="user-list" />
现在使用类定义我正在调用jquery对话框,如下所示
$('.user-list').click(function(){
$( "#user-form" ).dialog( "open" );
tableOpen(this);
});
此处,user-form是一个名称列表,如下所示
<div id="user-form" title="Select Employee" >
<table id="user-table">
<thead><th>Employee No</th><th>Name</th></thead>
<tbody>
<tr><td>Employee-1 No</td><td>Employee-1 Name</td></tr>
<tr><td>Employee-1 No</td><td>Employee-1 Name</td></tr>
<tr><td>Employee-1 No</td><td>Employee-1 Name</td></tr>
</tbody>
</table>
</div>
现在我使用对话框在对话框中打开div元素
$( "#user-form" ).dialog({
create: function() { },
autoOpen: false,
cache: false,
closeOnEscape: true,
height: 400,
width: 600,
modal: true,
buttons: {
Cancel: function() { $( this ).dialog( "close" );}
},
close: function() {}
});
对话框按预期显示。现在我将一个click事件添加到tableOpen函数中的用户表行,以便选择用户。
function tableOpen(selInput)
{
alert($(selInput).id().text()+"first");
$('#user-table tr').click( function() {
alert($(selInput).id().text()+"second");
});
//some other function here from displaying the selected user to input field
}
问题开始了。第一次通过单击选择用户时,tableOpen函数中的警报只执行一次。但是在随后点击时,第一个警报仅显示一次,但第二个警报也会记住以前的点击次数,并且会显示我之前点击的所有警报。
答案 0 :(得分:0)
function tableOpen(selInput)
{
alert($(selInput).id().text()+"first");
$('#user-table tr').unbind('click');
$('#user-table tr').click( function() {
alert($(selInput).id().text()+"second");
});
//some other function here from displaying the selected user to input field
}
答案 1 :(得分:0)
这是因为click事件的多重绑定。 你可以在这做两件事。
$('#user-table tr').off('click').on('click', function() { alert($(selInput).id().text()+"second"); });
答案 2 :(得分:0)
我不确定你究竟想说什么,但我尝试了,我收到#user-table
的三个提醒(等于second
中的行数)。
$('#user-table tr').click( function() {
alert($(selInput).id().text()+"second");
});
您必须使用特定的选择器来调用行上的click
事件。
例如为#user-table
中的每一行提供唯一ID,并将其用于调用.click()