这是我创建动态按钮的代码,该按钮一旦点击就会触发 $('#emailRemoveBtn').live('click', function()
。问题是,它总是发射两次。说,我单击按钮一次,但此功能执行两次。
任何想法可能有什么问题吗?
<script>
var tb1 = '<tr ><td width="27" align="left"><img src="icon_mail.png" width="24" height="24"></td><td width="228" align="left">';
var tb2 = '</td><td align="right"><a href="#" id="emailRemoveBtn" data-rembtn="';
var tb3 ='" class="ui-state-default ui-corner-all"><span class="ui-icon ui-icon-close"></span>remove</a></td></tr>';
var emailArray = new Array();
$('#emailRemoveBtn').live('click', function() { /// WHY DOES THIS EVENT FIRE OFF 2 TIMES?
alert( $(this).data('rembtn') );
//emailArray.splice( $(this).data('rembtn'), 1 );
//var tbl = "";
//for(var i=0;i<emailArray.length;i++)
//{
// tbl = tbl + tb1 + emailArray[i] + tb2 + i + tb3 ; /// "i" is dynamic identifier for "data-rembtn"
//}
//$('#emailList').html(tbl);
});
$('#addEmail').click(function()
{
var tbl = "";
if ( $("#inputEmail").val() != "" )
{
var newadd = true;
for(var i=0;i<emailArray.length;i++)
{
if ( emailArray[i] == $("#inputEmail").val() ) { var newadd = false; }
}
if ( newadd ) { emailArray.push( $("#inputEmail").val() ); } else { alert("no!"); }
for(var i=0;i<emailArray.length;i++)
{
tbl = tbl + tb1 + emailArray[i] + tb2 + i + tb3 ; /// "i" is dynamic identifier for "data-rembtn"
}
$('#emailList').html(tbl);
}
});
</script>
答案 0 :(得分:2)
我无法理解为什么它会运行两次查看该代码,但感觉就像它以某种方式被绑定到click事件两次。
这是值得尝试看看它是否只会触发一次,如果这有助于寻找另一个“点击”被绑定的实例。
$('#emailRemoveBtn').unbind('click').die().live('click', function() { doStuff(); }