单击按钮时,我在对话框中加载HTML
$("button").live('click', function() {
var $div = $('<div title="Form"></div>');
$div.load('test.html #formModal').dialog({
width: 900,
height: 500
})
})
#formModal的HTML看起来像
<form id="form">
<input id="input1" type="button" />
<input ...
</form>
<p id="formEdit"></p>
此时,HTML已成功加载到对话框
中我还有以下内容,当单击对话框中的#input1
时,它会在#formEdit
内插入文本。
var $form = $('#form'); // global variable
var $formedit = $('#formEdit'); // global variable
$form.find('#input1').live('click', function(){
$formedit.text('test'); //if i do $('#formEdit') instead of $formedit then it works
})
$formedit
在这里工作不正常。它没有传递给点击处理程序。如果HTML最初位于body
并且未使用load()
加载到对话框中,则它可以正常工作。造成这种情况的原因。
答案 0 :(得分:3)
由于forModal是动态加载的,因此无法使用常规页面加载。
请改为尝试:
$("button").live('click', function() {
var $div = $('<div title="Form"></div>');
$div.load('test.html #formModal', function(){
//#######ASSIGN THE #formEdit once the load is complete
$formedit = $('#formEdit');
}).dialog({
width: 900,
height: 500
});
})
答案 1 :(得分:0)
尝试类似:
var $form = $('#form'); // global variable
var $formedit = $('#formEdit'); // global variable
$form.find('#input1').live('click',{formedit: $formedit} , function(e){
e.data.formedit.text('test'); //if i do $('#formEdit') instead of $formedit then it works
})