【问题标题】:jQuery selectable manually invoke an eventjQuery 可选择手动调用事件
【发布时间】:2015-06-11 19:16:34
【问题描述】:

我有一些 jQuery 可选对象。默认情况下会选择该对象的某些项目,所以我有这样的事情:

HTML

<ol id='lunedi'>
    <li class='ui-state-default ui-selected' id='lunedi-1'>1</li>
    <li class='ui-state-default' id='lunedi-2'>2</li>
    <li class='ui-state-default' id='lunedi-3'>3</li>
    <li class='ui-state-default ui-selected' id='lunedi-4'>4</li>
<ol id='martedi'>
    <li class='ui-state-default ui-selected' id='martedi-1'>1</li>
    <li class='ui-state-default ui-selected' id='martedi-2'>2</li>
    <li class='ui-state-default' id='martedi-3'>3</li>
    <li class='ui-state-default' id='martedi-4'>4</li>

JS

// multiple selection
$(function() {
    //$("#lunedi").selectable();
    $("#lunedi").bind("mousedown", function(e) {
        e.metaKey = true;
    }).selectable();
});

// code for serialization
$(function() {
    $("#lunedi").selectable({
        stop: function() {
            var result = $("#result-lunedi").empty();
            $(".ui-selected", this).each(function() {
                //var index = $( "#lunedi li" ).index( this );
                var index = $(this).attr('id');
                result.append("#" + index);
            });
        }
    });
});

我想序列化选中的项目,但只有当我将选择状态至少修改为&lt;ol&gt; 的项目之一时它才能正常工作。

我认为这是因为 Javascript 仅在“停止”事件期间被调用,所以如果我不选择/取消选择任何内容,序列化代码将不会执行。

解决方案应该是手动调用停止例程,或者在处理数据之前对项目执行双重切换(以便在不更改值的情况下序列化结果),但我真的很困惑如何做到这一点.

【问题讨论】:

    标签: javascript jquery jquery-events jquery-ui-selectable


    【解决方案1】:

    在创建时使用相同的序列化函数

    // code for serialization
    $(function() {
        var updateResult = function () {
            var result = $("#result-lunedi").empty();
            $(".ui-selected", this).each(function() {
                //var index = $( "#lunedi li" ).index( this );
                var index = $(this).attr('id');
                result.append("#" + index);
            });
        };
        $("#lunedi").selectable({
            create: updateResult,
            stop: updateResult
        });
    });
    

    【讨论】:

    • 感谢您的回复。我已经尝试过您的解决方案,但仍然无法正常工作。我在 result.append(); 之后插入了一条警报消息;在调用函数时被告知,所以我可以说该函数仅在“停止”事件中继续被调用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2014-11-19
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多