Jquery动态bind绑定已有函数,函数自动执行的问题解决方法

在bind后面的方法,不能带括号,带括号就自动执行了...

<script>
//通过子元素删除某行
function deleteRow() {
  var flag = confirm(‘确认要删除吗?‘);
    if(flag == true) {
      console.log($(this).parents("tr").remove())
      bootbox.alert("删除成功!");
    }   }

$(function(){
  //jquery对象克隆方法,克隆任意对象,这里克隆表格最后一行对象。
    var newRow = $("tbody tr:last-child").clone();

    //将克隆的新行追加到表格末尾
    $(‘#table_bug_report‘).append(newRow);
    bootbox.alert("添加成功!");

  //jquery对象动态绑定已有函数,错误写法
  //重新给动态jquery对象绑定已有的函数,这种写法是错的,绑定函数时,会执行一次deleteRow()函数
  //newRow.find(".btn-danger").bind(‘click‘ , deleteRow());

  //正确写法
  //重新给动态jquery对象绑定已有的函数,绑定函数时应传入函数名,而不能带括号,带括号函数就自动执行了..
  newRow.find(".btn-danger").bind(‘click‘ , deleteRow);

  /*
    //另一种可行,重新给动态jquery对象绑定匿名函数(这个匿名函数不是已有的)
  newRow.find(".btn-danger").bind("click", function(){
    var flag = confirm(‘确认要删除吗?‘);
    if(flag == true) {
      console.log($(this).parents("tr").remove())
      bootbox.alert("删除成功!");
    }
  });
  */

  /*
        //硬核给表格添加一行的方法。
        //下面的表格行标签字符串并不是DOM对象,会有问题,下面调用append()函数,实际只是一串添加在页面的标签字符串。
        //浏览器只会简单解析,而不会有DOM对象层次的操作。
        $(‘#table_bug_report‘).append(
            ‘<tr><td class="center"><label><input type="checkbox" class="input"><span class="lbl"></span></label></td>‘ +
            ‘<td>‘+ $(‘#userId‘).val()  + ‘</td>‘ +
            ‘<td>‘+ $(‘#account‘).val() + ‘</td>‘ +
            ‘<td>‘+ $(‘#passwd‘).val()  + ‘</td>‘ +
            ‘<td>‘+ $(‘#CN_name‘).val() + ‘</td>‘ +
            ‘<td>‘+ $(‘#EN_name‘).val() + ‘</td>‘ +
            ‘<td><div class="inline position-relative" >‘ +
            ‘<button class="btn btn-mini btn-info" data-toggle="modal" data-target="#myModal"><i class="icon-edit">编辑</i></button> ‘ +
          ‘<button class="btn btn-mini btn-danger" onclick="deleteRow()"><i class="icon-trash">删除</i></button></div></td></tr>‘
       );
  */
})

</script>      

原文地址:https://www.cnblogs.com/Lints/p/11313760.html

时间: 2024-10-10 16:26:54

Jquery动态bind绑定已有函数,函数自动执行的问题解决方法的相关文章

jquery 动态事件绑定(0512)

jquery动态事件绑定,父元素需为静态元素,(不能是动态生成): $("#parent").on("click","#child",function(){ //.... });

用Jquery动态append方式加入标签时Css样式丢失的解决方法

一般在Jquery中会用下面的方式来添加新标签: var obj = "<fieldset data-role='controlgroup' data-type='vertical' data-role='fieldcontain'> <input id='menu0" type='checkbox'/><label for='menu0'> 复选框 </label> </fieldset>";  //按个人要求拼接

SQL Server &#39;已超过了锁请求超时时段&#39; 问题解决方法

SQL 有时遇到 已超过了锁请求超时时段. (Microsoft SQL Server,错误: 1222) 这个错误,刷新以后,右击某张表或者库,发现里面的表全部消失了 或者查询不到. 这是因为 sql进程死锁,资源被抢占,要解决这个问题,得杀死关闭 死锁的进程,下面介绍解决方案: 杀死进程的前提是找到 那个死锁的进程 , SELECT blocking_session_id '阻塞进程的ID', wait_duration_ms '等待时间(毫秒)', session_id '(会话ID)'

jQuery动态行绑定事件,发生重复绑定解决方案

背景: 系统需要动态增加分类,各分类下有各自的3项资金(有资金小计,问题就出在这里). 问题: 新增一条分类,需要给3项资金新绑定小计功能.这个时候会发现,初始第一行的计算,会调用两次,增加到三行的时候,第一行会重复计算三次,第二行会重复计算两次...以此类推 为什么会执行多次? 猜词: 新增一行,绑定计算函数,历史分类会累计事件.也就是说,每新增一行,历史的每一个分类都会增加一次事件绑定. 方案: 绑定事件前,删除事件.jQuery提供了on().live()绑定方法,对应的解绑事件off()

jquery中bind()绑定多个事件

bind()绑定事件 $(selector).bind(event,data,function): 参数event为事件名称(如"click,mouseover....."),data是可选的,规定传递到函数的额外数据,function为事件执行的函数. 绑定单个事件比较简单 $("button").bind("click",function(){ //事件处理内容... }); 绑定多个事件时,参数在一个大括号里面,event可以加双引号也可以

jquery动态live绑定toggle事件

$(".btn").live("click",function(){ $(this).toggle( function () { //事件 1 console.log('点击') }, function () { //事件 2 console.log('再点击') } ).trigger('click'); }); 原文地址:https://www.cnblogs.com/userzf/p/12426360.html

VS2013 字符串函数与VC不兼容问题解决方法

VS2013与我们旧版的VC有更多的改进,安全性更高.所以在一些少数的算法中,函数的兼容性还是有存在差异的.这里介绍一下字符串相关操作兼容性存在差异的解决方法: 点击‘资源视图’ 进入工程属性对话框. 在‘配置属性’下,将‘字符集’选择‘使用多字节字符集’ 在‘C/C++’下进入‘预处理器’,选择‘预处理定义’,在右侧下拉菜单选择‘编辑’,进入预处理定义编辑框 在编辑框内添加 _CRT_SECURE_NO_WARNINGS 点击 ‘确认’退出编辑对话框. 点击‘应用’,点击‘OK’完成配置. 到

在IE中使用js/jquery动态改变select的值时,select宽度缩短问题解决方法

今天在检查功能的时候,突然发现在IE里面有个select动态改变的时候宽度一直在缩短,试过很多方式都没解决 在网上找了很久才找到一个,先插入空的option,再进行赋值就OK了,记录一下,以后会用到的 var obj = document.getElementById('lst1'); var opn = document.createElement("OPTION"); obj.appendChild(opn);//先追加 opn.innerText = 11; opn.value

jQuery动态添加的元素绑定事件处理函数代码

jQuery动态添加的元素绑定事件处理函数代码 作者: 字体:[增加 减小] 类型:转载 有一段时间没用jquery了,今天又碰到这个问题.当时是知道有livejquery可以解决.但是我并不喜欢为了这个而另外加载一个. 我当时的处理方法是在添加的时候手工绑定事件处理函数.不过新版的jquery已经添加了这个功能.我们已经不需要为此烦恼了. 参考:http://api.jquery.com/live/ 以前我们定义事件,比如为元素定义单击事件是这样写的: 复制代码 代码如下: $('input'