我正在尝试使用 jQuery 插件从数据库中填充的列表项中创建一个可排序的列表,但效果仅适用于显示的第一个项目:
<?php if(isset($bookmarks)) : foreach($bookmarks as $row) :?>
<div id="makeDrag">
<?php $fixed = preg_replace('#^[^:/.]*[:/]+#i', '', $row->URL); ?>
<li>
<div class="well">
<div><?php echo anchor('http://'.$fixed, $row->Name); ?></div>
<div><strong>Comments:</strong> <?php echo $row->Comments; ?></div>
<h4 class="btn-small">
<?php echo anchor("site/delete/$row->id", "Delete"); ?>
</h4>
</li>
</div>
<?php endforeach; ?>
我可以看到这是哪里出了问题,但不知道如何解决它。我显然希望效果影响所有填充li
而不仅仅是第一个。任何帮助都会很棒。对不起,如果我不清楚,如果这令人困惑,我可以尝试改写。
原因可能是因为你有
$('#makeDrag').sortable();
但是你还有一个 foreach 语句,它创建多个#makeDrag
元素,从而使你的 HTML 无效。
要解决此问题,请执行以下操作:
<?php if(isset($bookmarks)) : ?>
<ul id="makeDrag">
<?php foreach($bookmarks as $row) : ?>
<?php $fixed = preg_replace('#^[^:/.]*[:/]+#i', '', $row->URL); ?>
<li>
<div class="well">
<div><?php echo anchor('http://'.$fixed, $row->Name); ?></div>
<div><strong>Comments:</strong> <?php echo $row->Comments; ?></div>
<h4 class="btn-small"><?php echo anchor("site/delete/$row->id", "Delete"); ?></h4>
</div>
</li>
<? endforeach; ?>
</ul>
<?php endif; ?>
呵呵