与.live的jquery-ui对话问题

时间:2009-06-07 15:06:50

标签: jquery jquery-ui jquery-ui-dialog

我正在从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 个答案:

答案 0 :(得分:1)

什么haim evgi意思是说你为什么要做所有的prev()。prev()....

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();
Prevall说抓住所有以前的兄弟姐妹并用('td:eq(4)')过滤它们,:eq(4)表示采用零指数为4的元素($ 5之前的第5个兄弟) ).parent())。

哦,.parent没有任何选择器,只是抓住了第一个父级。如果你想找到第一个td父母,试试这个:

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

答案 1 :(得分:0)

为什么这一行:

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

转到要更改div的{​​{1}}, 使用htmlclass选择器? 你有提醒gameno吗? 它包含数字?