首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多事件绑定不适用于动态内容。

多事件绑定不适用于动态内容。
EN

Stack Overflow用户
提问于 2013-07-02 11:25:34
回答 1查看 70关注 0票数 0

我有一个“输入字段组件”,比如:

代码语言:javascript
复制
<div class="input-multilingual multilingual-field">
   <div class="input-multilingual-prepend">
        <input type="text" value="" name="nameVariants[0].texts[nl_BE]">
    </div>
   <div class="input-multilingual-prepend">
        <input type="text" value="" name="nameVariants[0].texts[en_GB]">
    </div>
</div>

其中我附加了一个焦点/模糊事件,该事件适用于页面加载:

代码语言:javascript
复制
$(".multilingual-field").on({
        focus: function() {
            $(this).parents(".multilingual-field").addClass("focus");
        },
        blur: function() {
            $(this).parents(".multilingual-field").removeClass("focus");
        }
    }, ":input");

问题是,这包含在div中,一旦添加了新的“输入字段组件”,AJAX就会重新呈现内容。在那个动作之后,焦点/模糊的方法不再起作用了。

我认为通过添加":input"作为.on(...)上的一个参数,这将适用于动态内容?我遗漏了什么?

更新

看起来,如果我在$(document).on({...}, ".multilingual-field :input")上听的话,效果很好--这是为什么?:-)

EN

回答 1

Stack Overflow用户

发布于 2013-07-02 14:14:54

jQuery中的事件处理程序在执行" on“函数时附加到特定的DOM节点。当DOM节点被移除并重新创建时,它正在释放它的事件侦听器。

使用"live“函数代替。

代码语言:javascript
复制
$(".multilingual-field").live("focus",
        function() {
            $(this).parents(".multilingual-field").addClass("focus");
        }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17424328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档