拖动多个jQuery ui

时间:2015-03-09 20:49:56

标签: javascript jquery jquery-ui

我可以在不重复所有代码的情况下拖动并保存到多个Cookie吗?

$(function() {
     $('.demo').draggable({
        cursor: "move"
        ,

        stop: function(event, ui) {
            $.cookie('demox', $(this).css('left'));
            $.cookie('demoy', $(this).css('top'));
        }
    })
     .resizable({
                    aspectRatio: true,
            })
})

$(function() {

    if ($.cookie('demox') != null) {
        $('.demo').css('left', $.cookie('demox'));
    } 

    if ($.cookie('demoy') != null) {
        $('.demo').css('top', $.cookie('demoy'));
    } 
})

1 个答案:

答案 0 :(得分:0)

你可以这样做:

为每个元素使用特定ID是一个选项吗?有了这个,您可以将相同的处理程序附加到这些对象,并在调用处理程序时检查它,方法是选中this

By Handler我的意思是

function handler(event, ui)
{
    $.cookie('demox_'+this.id, $(this).css('left'));
    $.cookie('demoy_'+this.id, $(this).css('top'));
}

你可以通过写

来附加它
$('.demo').draggable({
    cursor: "move",
    stop: handler
})

当然,你必须给你的“.demo” - 元素一个ID。

我希望这对你有用:)

P.S。:稍后您可以使用以下内容:

$(function() {

    $('[id*="demoID_"]').forEach(function(element)
    {
        if ($.cookie('demox_'+element.id) != null) {
            element.css('left', $.cookie('demox_'+element.id));
        }

        if ($.cookie('demoy_'+element.id) != null) {
            element.css('top', $.cookie('demoy_'+element.id));
        } 
    });
});

我希望我在那里没有拼写错误:)

在这种情况下,你的元素应该有这样的ID:demoID_n,然后cookie将存储在demox_demoID_0,demox_demoID_1等等