点击事件会多次触发

时间:2014-06-14 09:13:57

标签: javascript jquery

我检查过以前的问题,但没有得到任何帮助。 我在头文件中写了这个脚本:

     <script type="text/javascript">

     $(function () {
          var as=       $("#dialog1").dialog({
            autoOpen: false,
            height:700,
            width:700
        });
      $("#register").unbind().click(function () {          
        var url="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=site/register";
        as.load(url).dialog("open");
        });
      $("#login").unbind().click(function () {          
        alert("click on login fired.");
      var url="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=site/login";
        as.load(url).dialog("open");
        });
         $(".ui-state-default .ui-icon").click(function () { as.dialog("close");});
                  $(".com").unbind().click(function () {
                var element = $(this);
                var id = element.attr("id");
            var url='<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=video/comments&video_id='+id;
            as.load(url).dialog("open");
            });

         $(".smile").unbind().click(function () {
                var element = $(this);
                var id = element.attr("id");            
                var url="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=video/smiles&video_id="+id;
                as.load(url).dialog("open");
            });



        });
    </script>

&#39;登录&#39;和&#39;注册&#39;单击标题的事件,以及另一个页面的剩余两个事件。 当我转到那个页面时,我首先点击“登录”#39;之后再次点击登录,只点击一次事件通话,但是当我第三次点击“登录”时,再点击事件点击三次,再次当我点击这个,然后点火登录事件增加。 任何人都可以告诉我这背后的原因吗?

2 个答案:

答案 0 :(得分:1)

为什么不使用 .one()

$("#login").one('click',function () {          
    alert("click on login fired.");
    var url="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=site/login";
    as.load(url).dialog("open");
});

$("#register").one('click',function () {          
    var url="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=site/register";
    as.load(url).dialog("open");
});

对于基于类选择器的点击事件.one()无效,

使用此: Updated Demo

$('.com').click(function(){
    //...
    //...
    //your function

    $(this).unbind();
});

答案 1 :(得分:0)

 $("#login").one("click", function(e) {          
      alert("click on login fired.");
      var url="<?php echo Yii::app()->request->baseUrl; ?>/index.php?r=site/login";
      as.load(url).dialog("open");
 });