1

我弄得一团糟。:) 我是 jQuery 的新手。丰富的 PHP 经验。很确定我已经下载了 1/4 的互联网临时文件,试图找到帮助的线索,买了超过 100 美元的书。请帮我学习这个!

这是情况。我正在处理可以编辑信息的页面。此信息按几个不同的级别进行排序。我们有房间和物品。项目可以是房间内的许多不同项目。这些项目被收集起来,然后循环到它们相应的选项卡中,即一个房间。选项卡、表格、行等都在这些循环中处理。此外,我正在尝试设置 jquery 以打开一个对话框来编辑房间内列出的项目。这个对话框最终会有 UI 可排序插件来组织数据。

循环很好用,对话框很好用,甚至是可排序的功能。但是,由于每个选项卡都应该有自己独特的对话框,我知道我需要为每个对象设置一个唯一标识符,我可以在循环中轻松完成,但不知道如何让 jQuery 识别它。

因此,当您单击“编辑”时,每个对话框对象都会出现一个对话框。

处理这个问题的最佳方法是什么?一个jQuery循环?

(我遗漏了一些看起来不相关的东西。对不起,如果语法混乱,我会在它工作后清理。:P)

PHP/HTML

    $count = count( $tpl['template'] );

for( $i = 0; $i < $count; $i++ )
{
    foreach( $tpl['template'][$i] as $k => $v )
    {
        if( is_int($k) )
        {
            unset( $tpl['template'][$i][$k] );
        }
    }
}

$temprooms = array();
for( $i = 0; $i < $count; $i ++ )
{
    foreach( $tpl['template'][$i] as $k => $v )
    {
        if( $k == "room_name" )
        {
            if( ! in_array($v, $temprooms, true ) )
            {
                $temprooms[] = $v;
            }
        }
    }
}
$rooms = array();
foreach( $temprooms as $k => $v )
{
    $rooms[$k+1] = $v;
}
?>
<div id="nested-tabs">
        <ul>
<?
foreach( $rooms as $k => $v )
{
?> <li><a href="#<?echo $v; ?>"><?echo $v; ?></a></li>
<?
}
?>
</ul>

<?php
krumo( $tpl['template'] );

foreach( $rooms as $these => $those )
{
?>
        <div id="<?php echo $those; ?>">
          <table class="ebc-table">
            <thead>
              <tr>
                <table class="ebc-table">
                  <thead>
                    <tr>
                      <th class="sub">Component</th>
                      <th class="sub">U/M</th>
                      <th class="sub">Clean</th>
                      <th class="sub">Repair</th>
                      <th class="sub">Replace</th>
                      <th class="sub">Upgrade</th>
                    </tr>
<?
    foreach( $tpl['template'] as $k => $v )
    {
        foreach( $tpl['template'][$k] as $key => $value )
        {
            if( $key == "room_name" )
            {
                if( $key != $those )
                {
                    $roomname = $value;
                }
            }
            else{
                if( $v['room_name'] == $those )
                {
                    if( $key == "item_name" )
                    {
?>                  <tr>
                            <td><?php echo $value; ?></td>
<?
                    }
                    if( $key == "um" )
                    {
?>                  <td><?php echo $value; ?></td>
<?
                    }
                    if( $key == "GROUP_CONCAT(IC.amt)" )
                    {
                        $prices = explode( ",", $value );
                        foreach( $prices as $index => $price )
                        {
?>                      <td><?php echo $price; ?> </td>
<?                  }
?>                  </tr> <?
                    }
                }
            }
        }
    }
    ?>

                      </thead>
                </table>
              </tr>
             <tr>
                <td>
                    <p>
                        <label class="title">&nbsp;</label>
                        <a href="#" class="room-edit" >Edit</a>
                    </p>
                </td>
            </tr>
            </thead>
          </table>
         </div>


    <div class="edit-dialog" title="Edit Room">
        <table width="100%" height="100%" border="0">
            <tr>
                <td width="40%">
                    <p>
                        <ul id="sortable1" class="connectedSortable">
                            <li class="ui-state-default">Item 1</li>
                            <li class="ui-state-default">Item 2</li>
                            <li class="ui-state-default">Item 3</li>
                            <li class="ui-state-default">Item 4</li>
                            <li class="ui-state-default">Item 5</li>
                        </ul>
                    </p>
                </td>
                <td>
                    <center>
                        <br />
                        <p>
                            <a href="#" class="add-all">&lt; Add All</a>
                        </p>
                        <br />
                        <p>
                            <a href="#" class="remove-all">Remove All &gt;</a>
                        </p>
                        <p>
                            <br />
                            <a href="#" class="reset">Reset</a>
                        </p>
                    </center>
                </td>
                <td width="40%">
                    <p>
                        <ul id="sortable2" class="connectedSortable">
                            <li class="ui-state-default">Item 1</li>
                            <li class="ui-state-default">Item 2</li>
                            <li class="ui-state-default">Item 3</li>
                            <li class="ui-state-default">Item 4</li>
                            <li class="ui-state-default">Item 5</li>
                        </ul>
                    </p>
                </td>
            </tr>
        </table>
    </div>
<?
}
?>

这是我正在尝试使用的脚本片段:

if( $ ('div.edit-dialog').length > 0){
    $( 'div.edit-dialog' ).dialog({ 
        autoOpen: false,
        height: 500,
        height: 500,
        width: 550,
        modal: true,
        position:['middle','middle'],
        draggable: true,
        resizable: true,
        buttons: {
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        },
            close: function() {
                allFields.val( "" ).removeClass( "ui-state-error" );
            }
    });

    $( 'a.room-edit').click(function() {
        $( 'div.edit-dialog' ).dialog( "open" );
        });

    $( "#sortable1, #sortable2" ).sortable({
        connectWith: ".connectedSortable",
        dropOnEmpty: true
    }).disableSelection();

    $("a.add-all").click(function() {
        $("#sortable2 li").appendTo("#sortable1");
    });
    $("a.remove-all").click(function() {
        $("#sortable1 li").appendTo("#sortable2");
    });
    $("a.reset").click(function(resetall) {
        $('#sortable1').html('');
        $('#sortable2').html('');
        $('#sortable1').html(reset1);
        $('#sortable2').html(reset2);
    });

    var reset1 = $('#sortable1').html();
    var reset2 = $('#sortable2').html();

}

如果您需要更多信息,请告诉我。

非常感谢!

4

1 回答 1

0

我相信您可以使用 HTML5 数据属性来实现您的目标:

所以你的 a.room-edit 节点可能像:

<a href="#" class="room-edit" data-roomID="room_12345">Edit</a>

你的点击功能可能是这样的:

$( 'a.room-edit').click(function() {
    var roomID = $(this).attr('data-roomID');

    // do something spectacular
});
于 2013-02-08T23:14:38.660 回答