多次单击事件触发

Click events fire multiple time

本文关键字:事件 单击      更新时间:2023-09-26

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

     <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>

'Login'和'Register'点击事件作为标题,剩下的两个事件用于另一个页面。当我去那个页面时,我首先点击"登录",然后再次点击登录,点击事件只调用一次,但是当我第三次点击"登录"时,然后登录点击事件三次,再次当我点击这个时,然后登录事件的数量增加。有人能告诉我这背后的原因吗?

你为什么不使用。()

$("#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()不起作用,

使用更新的Demo

$('.com').click(function(){
    //...
    //...
    //your function
    $(this).unbind();
});
 $("#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");
 });