jQuery在jQuery.load()之后找不到任何加载的元素

时间:2015-09-27 12:42:42

标签: jquery find

jQuery在jQuery.load()

之后找不到任何已加载的元素
function makeEditForTextBox(textbox,editor) {
    editor.load("templates/textbox-edit.html");
    editor.find("#edit-save").click(function(event) { //here jQuery can't find #edit-save button
       id=editor.find("#edit-id-name").text();
       alert(id);
       textbox.find("input").attr("id",id);
       textbox.find("input").attr("name",id);
       textbox.find("input").attr("placeholder",editor.find("#edit-placeholder").text());
       textbox.find("label").text(editor.find("#edit-label-text"));
       alert("save clicked");
   });
   alert("loaded");
}

文本框-edit.html:

<label>ID/Name</label>
<input type="text" id="edit-id-name">
<label>Label Text</label>
<input type="text" id="edit-label-text">
<label>Placeholder</label>
<input type="text" id="edit-placeholder">
<label>Help Text</label>
<input type="text" id="edit-help-text">
<button id="edit-save">Save</button>
<button id="edit-cancel">Cancel</button>

我在浏览器中加载了元素,但jQuery无法找到它们。

1 个答案:

答案 0 :(得分:0)

find()load() 启动后立即运行,而不是在load()完成时运行。您可以将该代码放在回调中,以便在加载完成时执行。

http://api.jquery.com/load/

  

.load(url [,data] [,complete])

function makeEditForTextBox(textbox,editor) {
    editor.load("templates/textbox-edit.html", function(){
        editor.find("#edit-save").click(function(event) { 
           id=editor.find("#edit-id-name").text();
           alert(id);
           textbox.find("input").attr("id",id);
           textbox.find("input").attr("name",id);
           textbox.find("input").attr("placeholder",editor.find("#edit-placeholder").text());
           textbox.find("label").text(editor.find("#edit-label-text"));
           alert("save clicked");
       });
    });
}