2015-09-27 54 views
1

的jQuery没有找到jQuery.load之后的任何加载的元素()的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找不到它们。

+0

你可以使用'负载()'回调或在您的情况更好,委托单击事件http://learn.jquery.com/events/event-delegation/ –

回答

0

find()load()开始之后立即运行,而不是当load()结束时。您可以将该代码放入回调中,以便在加载完成时执行该代码。

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

.load(URL [数据] [,完整])

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"); 
     }); 
    }); 
} 
+0

谢谢!这行得通! – almark