JQuery-UI диалоговое окно проблема с .live - PullRequest
1 голос
/ 07 июня 2009

В настоящее время я загружаю данные из базы данных mysql - если выполняется определенное условие, отображается кнопка добровольца. Когда кнопка нажата, я хочу отобразить диалоговое окно, и файл php вызывается для заполнения поля. Сначала я инициализирую диалог:

$(document).ready(function() {
    $("#chaincrewDialog").dialog({ autoOpen: false });
});

Вот как я вызываю диалоговое окно:

    $('.volunteer').live("click", function(){
            // this gets the game number from the table to pass to the php file
            var gameno=$(this).parent('td').prev("td").prev("td").prev("td").prev("td").prev("td").html();
           $('#chaincrewDialog').dialog('open').load("popup.php?gameno="+gameno);
});

Кнопка «Мой клик» работает нормально, сообщений об ошибках js или firebug нет. Мой диалог вызывается со следующими параметрами:

 $(function() {
  $('#chaincrewDialog').dialog({
            resizable: true,

    autoOpen:   false,
    resizable:  false,
    modal:      true,
            dialogClass: 'flora',
            title: 'Volunteer',
            overlay: {
        opacity: 0.5,
        background: "#A8A8A8"
    },
    height: 600,
    width: 700,
            buttons: {
                    'Close': function() {
                    $(this).dialog('remove')
                    }
            }
});

Я уверен, что упускаю что-то простое, но я не могу заставить мой диалог даже отображать ....

Ответы [ 2 ]

1 голос
/ 08 июня 2009

Что хаим евги имеет в виду, так это то, почему вы делаете все пред (). Пред () ....

var gameno=$(this).parent('td').prev("td").prev("td").prev("td").prev("td").prev("td").html();

Вы должны быть в состоянии сделать:

var gameno=$(this).parent().prevAll('td:eq(4)').html();

Превал говорит, что нужно взять всех предыдущих братьев и сестер и отфильтровать их с помощью ('td: eq (4)'), а: eq (4) говорит, что взять элемент с нулевым индексом 4 (пятый брат перед $ ( ) .parent ()).

О, родитель не имеет селектора, он просто захватывает первого родителя. Если вы хотите найти первого родителя td, попробуйте это:

var gameno=$(this).parents('td:first').prevAll('td:eq(4)').html();
0 голосов
/ 07 июня 2009

почему вся эта строка:

var gameno=$(this).parent('td').prev("td").prev("td").prev("td").prev("td").prev("td").html();

добраться до div, который вы хотите изменить html, с селектором class или id? ты предупредил Гамено? его содержит номер?

...