Диалог jQuery не может видеть глобальные переменные - PullRequest
1 голос
/ 15 апреля 2011

Я загружаю HTML в диалоговом окне при нажатии кнопки

$("button").live('click', function() {
    var $div = $('<div title="Form"></div>');
    $div.load('test.html #formModal').dialog({
        width: 900,
        height: 500
    })
})

HTML-код #formModal выглядит как

  <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 ]

3 голосов
/ 15 апреля 2011

Поскольку forModal загружается динамически, formEdit недоступен при обычной загрузке страницы.

Попробуйте вместо этого:

$("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
    });

})
0 голосов
/ 15 апреля 2011

попробуйте что-то вроде:

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
})
...