动态按钮发射2次,为什么?

时间:2011-06-02 19:35:59

标签: jquery

这是我创建动态按钮的代码,该按钮一旦点击就会触发 $('#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>

1 个答案:

答案 0 :(得分:2)

我无法理解为什么它会运行两次查看该代码,但感觉就像它以某种方式被绑定到click事件两次。

这是值得尝试看看它是否只会触发一次,如果这有助于寻找另一个“点击”被绑定的实例。

$('#emailRemoveBtn').unbind('click').die().live('click', function() { doStuff(); }