如何使用ui-selectable传递准确的多项选择数据

时间:2014-06-12 13:09:57

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

我正在使用jquery-ui selectable,我选择多个div,例如:divs 1-3和divs 5-6 在选择之后我将div的信息传递给一个数组然后再传给一个数组string(strToSend)。问题是:当我选择div 1-3和div 5-6时,我得到这个信息: 对于div 1-3 :100,200,300。 对于div 5-6 :100,200,300,400,500,600。 - >我真正需要的是:500,600。首先我认为我需要在每个循环中清除我的数组,所以我尝试了:_info1.length = 0; _info1 = []; - 没有变化。 我希望我的问题很清楚,请提出想法做什么?..

// HTML

<div class="ui-selectable" id="day" style="width: 100px; float: left;">
 Sunday
   <div class="ui-selectee" id="1" >100 </div>
   <div class="ui-selectee" id="2" > 200 </div>
   <div class="ui-selectee" id="3" > 300 </div>
   <div class="ui-selectee" id="4" > 400 </div>
   <div class="ui-selectee" id="5"> 500 </div>    
<div class="ui-selectee" id="6"> 600 </div>    
<div class="ui-selectee" id="7"> 700 </div>    
</div>

// Jquery的

 $(function () {    
        $("#day").bind("mousedown", function (event) {
            return event.metaKey = true;
        }).selectable({
            stop: function () {              
                _info1.push(0);              
                $(".ui-selected", this).each(function () {                  
                    var id = this.id;
                    _info1.push(id);
                });                 
                strToSend += _info1[0] + "_" + _info1[1] + "-" + _info1[_info1.length - 1] + "*";                                                          

            }
        });});

1 个答案:

答案 0 :(得分:0)

这是一个小提琴:http://jsfiddle.net/tS2cV/

不确定您在哪里宣布_info1,但看起来您只是想让它保留您选择的div。您的每个功能(下方)都会通过并抓取所有已选择的div,因此您不必事先手动将任何内容推入其中。

我所做的就是在stop函数中声明_info - 我确定你要对要发送的字符串做什么,所以我为了简单起见删除了它:

$(function () {    
    $("#day").bind("mousedown", function (event) {
        return event.metaKey = true;
    }).selectable({
        stop: function () {
            var _info1 = [];
            $(".ui-selected", this).each(function () {                  
                var id = this.id;
                _info1.push(id);
            });                                                                       
alert(_info1);
        }
    });});