jQuery';焦点';事件不';不适用于动态生成的元素

jQuery';焦点';事件不';不适用于动态生成的元素,jquery,input,label,dynamically-generated,onfocus,Jquery,Input,Label,Dynamically Generated,Onfocus,我动态生成 <input type="text" id="foo"> <label for="foo"> 和功能: function updateWithLabelInputs(withLabel) { withLabel.die("focus").live("focus", function (e) { $(this).parent().find('label').hide(); }); withLabel.die("blur"

我动态生成

<input type="text" id="foo">
<label for="foo">
和功能:

function updateWithLabelInputs(withLabel) {
    withLabel.die("focus").live("focus", function (e) {
        $(this).parent().find('label').hide();
    });
    withLabel.die("blur").live("blur", function (e) {
        if ($(this).val() == '') {
            $(this).parent().find('label').show();
        }
    });    
}
当我单击“按标签”时,我希望事件被触发,但它没有。 有趣的是:如果同一个侦听器应用于现有的(不是动态的)html,那么它就可以工作。
有什么问题?为什么侦听器不适用于动态元素?

我希望看到您的所有代码,在其中创建元素并将事件附加到元素。我认为你没有按照正确的顺序来做:

事件处理程序仅绑定到当前选定的元素;他们 在代码调用.on()时页上必须存在。 要确保元素存在并且可以选择,请执行事件 在文档就绪处理程序中为 页面上的HTML标记如果新的HTML被注入到 页面中,选择元素并在新HTML之后附加事件处理程序 放置在页面中。或者,使用委派事件附加事件 处理程序,如下所述

早期版本:
你需要这样做。或者,如果您愿意使用更高版本的jQuery,而不使用
die
live
,请使用和谢谢,但我不想为小任务包含整个插件。那么,您使用的是jQuery 1.9中已弃用和删除的die和live函数。您应该改为使用.on。让我们看看更多代码。请说明如何创建元素并填充myElement变量;函数updateWithLabelInputs(myElement){myElement.die(“focus”).live(“focus”,函数(e){$(this.parent().find('label').hide();});myElement.die(“blur”).live(“blur”,函数(e){$(this.val()==”{$(this.parent().find('label').show();});对不起,请在问题中粘贴,格式化。到目前为止看起来还不错,现在演示如何调用该函数。我对withLabel参数值更感兴趣。
function updateWithLabelInputs(withLabel) {
    withLabel.die("focus").live("focus", function (e) {
        $(this).parent().find('label').hide();
    });
    withLabel.die("blur").live("blur", function (e) {
        if ($(this).val() == '') {
            $(this).parent().find('label').show();
        }
    });    
}