首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  C#

如何对由 JS 代码动态生成的控件进行事件的绑定

  •  
  •   a194259440 · 2018-10-24 15:07:01 +08:00 · 1915 次点击
    这是一个创建于 415 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已知将代码重构为方法,然后使用 bind 进行绑定,但是老平台设计太多 JS 了,不可能每一个事件都去重构,还有其他的方法吗?

    7 回复  |  直到 2018-10-24 18:29:09 +08:00
        1
    bsg1992   2018-10-24 16:46:49 +08:00
    还是在用 webfrom 嘛
        2
    murolq   2018-10-24 16:59:16 +08:00
    方法 1.
    ```js
    var $ele = $('<button id='upload' />');
    $('#form').append($ele);
    $ele.on('click', doSomething);
    ```

    方法 2
    ```js
    // file1.js
    $('#form').on('click', '#upload', doSomething)

    // file2.js
    var $ele = $('<button id='upload' />');
    $('#form').append($ele);
    ```
        3
    a194259440   2018-10-24 18:10:00 +08:00
    @bsg1992 呃,不是,难道 MVC 不能用吗?

    @murolq 思路是一样的,这样的话还是要去每个 JS 改,主要是,程序加载时已经绑定了事件
        4
    a194259440   2018-10-24 18:17:13 +08:00
    假如有 1 个按钮
    <button id="btn1" class="btns">按钮</button>
    在 ready 时,有 10 个不同的 JS 对他进行了绑定事件:代码如下
    click.js
    $(".btns").click(function(){
    ....
    });
    hover.js
    $(".btns").hover(function(){
    ....
    });
    blur.js
    $(".btns").blur(function(){
    ....
    });
    ...
    然后我根据需求,用 ajax 请求的数据,动态生成一个一样的按钮
    <button id="btn2" class="btns">按钮</button>
    除了类似于这样的:
    $(".btns").bind("click",bindclick);
    function bindclick(){
    ....
    }
    还有什么其他的方法吗?能不能获取到 id=btn1 的所有绑定事件,然后赋给 btn2?
        5
    TomatoYuyuko   2018-10-24 18:26:07 +08:00
    试试 jquery 的 clone()
        6
    Pastsong   2018-10-24 18:28:14 +08:00   ♥ 1
    event delegate
        7
    TomatoYuyuko   2018-10-24 18:29:09 +08:00   ♥ 1
    var $newBtn = $(".btns").clone(true)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1082 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 23:29 · PVG 07:29 · LAX 15:29 · JFK 18:29
    ♥ Do have faith in what you're doing.