jQuery Dialog无法看到全局变量

时间:2011-04-15 02:21:24

标签: jquery jquery-ui variables dialog global

单击按钮时,我在对话框中加载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()加载到对话框中,则它可以正常工作。造成这种情况的原因。

2 个答案:

答案 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
})
相关问题