首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery Draggable的问题

jQuery Draggable的问题
EN

Stack Overflow用户
提问于 2010-11-15 11:32:41
回答 2查看 403关注 0票数 0

我很难让下面循环中的最后一个可拖动的项目成为可拖动的(最后一个项目之前的所有其他项目都可以,它们是可拖动的)。当我查看最后一个可拖动项的源代码时,它输出到浏览器的最后一个可拖动项的html看起来很好,"ui- draggable“类没有附加到div (当使用firebug查看时)。有什么想法吗?谢谢

代码语言:javascript
复制
            <?php foreach ($categorySliderImages->result() as $idx => $row): ?>
            <li>
            <div class="slider">
            <div class="slide">
                <h2><?= $row->Header ?></h2>
                <div><?= $row->Teaser ?></div>
                <p><a href="/products/product/<?= $row->PID; ?>/<?= $row->FID; ?>">Click Here</a> for more information</p>
            </div>
            <?php $subImages = $this->products_model->get_category_slider_images($row->PID); ?>
            <?php foreach ($subImages->result() as $idx2 => $row): ?>
            <div id="catdraggable<?= $row->IID ?>" style="position: absolute; top:<?= $row->SliderTop ?>px; left:<?= $row->SliderLeft ?>px;">
                <img src="/FLPRODIMGS/thumb/<?= $row->Name ?>" />
            </div>                 
            <script type="text/javascript">
                $(function () {
                    $("#catdraggable<?= $row->IID ?>").draggable({
                        stop: function (event, ui) {
                            p = $("#catdraggable<?= $row->IID ?>").position();
                            $.post("/admin/set_slider_image_position", {
                                id: '<?= $row->IID ?>',
                                top: p.top,
                                left: p.left,
                                context: 'cat'
                            })
                        }
                    });
                });
            </script>

            <?php endforeach; ?>
            </div>
            <?php endforeach; ?>
            </li>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-15 11:53:15

我不知道这是否能解决您的问题,但至少它会稍微减小页面的大小:不是每次循环迭代都重复脚本,而是将它移到foreach之外,并向div中添加一个您希望使其可拖动的类。所以就像这样:

代码语言:javascript
复制
<div class="yourclass" data-yourid="<?= $row->IID ?>" id="catdraggable<?= $row->IID ?>" style="position: absolute; top:<?= $row->SliderTop ?>px; left:<?= $row->SliderLeft ?>px;">

data-yourid属性是为了便于以后阅读,它是有效的HTML5。最后是以下脚本(只有一次,即在endforeach之后):

代码语言:javascript
复制
$(function () {
    $(".yourclass").draggable({
        stop: function (event, ui) {
            p = $(this).position();
            $.post("/admin/set_slider_image_position", {
                id: $(this).attr("data-yourid"),
                top: p.top,
                left: p.left,
                context: 'cat'
            })
        }
    });
});
票数 1
EN

Stack Overflow用户

发布于 2010-11-15 11:53:29

尝试将目标可拖动元素封装在一个包含div中,并让jQuery引用该元素。这会让你的声明更清晰一些:

代码语言:javascript
复制
    <div id="draggable">
        <div id="drag-<?= $row->IID ?>" style="position: absolute; top:<?= $row->SliderTop ?>px; left:<?= $row->SliderLeft ?>px;">
            <img src="/FLPRODIMGS/thumb/<?= $row->Name ?>" />
        </div>
    </div>

然后,您的jQuery语句将获得以下内容:

代码语言:javascript
复制
$(function () {
       $("#draggable div").draggable({
              stop: function (event, ui) {
                    p = ui.position;
                    $.post("/admin/set_slider_image_position", {
                                id: ui.helper[0].id,
                                top: p.top,
                                left: p.left,
                                context: 'cat'
                    })
               }
       });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4181202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档