0

我正在尝试为桌面 RPG 编写应用程序。我所做的是创建一个玩家列表(在列表视图中),并希望遍历每个玩家。

应该发生什么:每次轮到玩家时,玩家的列表元素都会突出显示(颜色变化)并出现一个弹出窗口。用户输入所采取的操作数。然后它将移动到列表中的下一个玩家。

实际发生的情况:列表中的第一个玩家被突出显示,弹出窗口出现,用户提交操作数......然后一切都停止了。

我试图弄清楚为什么它退出了.each()。我看不到任何中断/返回错误。我想知道我是否遗漏了一些简单的东西,或者这可能是一个比我想象的更复杂的问题。

这是列表视图的代码:

<ul id="combat_list" data-role="listview" data-inset="true" data-theme="a" data-count-theme="a">
    <li data-role="list-divider">Combat Round: <?php echo $round; ?><span class="combat_result"></span></li>
    <?php
        for ($i = 0; $i < $numrows; $i++) {
    ?>
            <li id="combatant"><h3 class="ui-li-heading"><span class="player_name"><?php echo $member[$i]['player_name']; ?></span></h3><span class='ui-li-count'><?php echo $member[$i]['player_total_init']; ?></span>
                <p class="ul-li-desc"><strong>Actions Remaining: </strong><span class="remaining"><?php echo $member[$i]['player_actions_remain']; ?></span></p>
            </li>
    <?php
         }
    ?>

这是我的 jQuery:

        $('#combatant').each(function(index, value) {
            $(this).attr('data-theme', 'b');
            $('#combat_list').listview("refresh");
            $(this).buttonMarkup();
            var actions_remaining = $(this).find('.remaining').text();
            var combatant_name = $(this).find('.player_name').text();
            var combat_id = '<?php echo $combatid; ?>';             
            $("#data_holder").data({"curr_actions_remaining" : actions_remaining});

            $("#enter_num_actions").popup({
                    beforeposition: function( event, ui ) {
                        $("#data_holder").data({"combatant_name": combatant_name, "combat_id": combat_id});
                    },
                    afterclose: function( event, ui ) {
                        $('#combat_list').listview("refresh");
                    }
            }); 
        });

我不知道为什么它只遍历#combatant 的第一个实例。在我的测试中,有三个实例。它总是在第一个之后停止。

如果有人有任何建议,我将不胜感激。先感谢您!

4

1 回答 1

2

你不应该对多个 DOM 元素使用相同的 id,这个属性是一个唯一的标识符。改为使用class属性并$('.combatant')选择它们。

于 2013-10-25T23:46:09.160 回答