Как выбрать выбранные элементы с пользовательским интерфейсом JQuery

Я ищу информацию о событии, и ui объекты jQuery выбираемых событий: "выбор" и "начало" принимают в качестве параметров. Я не могу найти это в документации, и переходы по свойствам не помогают.

$('#content_td_account').selectable({
    filter: 'li:not(".non_draggable")',
    selecting: function(event, ui) { 
    }
});

В частности, я хочу найти, какие элементы будут выбраны, и проверить их, чтобы их родительские элементы были одинаковыми или нет. Я предположил, что это будет где-то в объекте ui.

Ответы

Ответ 1

Когда элемент выбран, он получает добавленный класс ui-selected.

Итак, вы можете получить все выбранные элементы с помощью $(".ui-selected")

Это может не работать точно, но я думаю, что идея будет примерно такой:

$('#content_td_account').selectable({
  filter: 'li:not(".non_draggable")',
  selecting: function(event, ui) { 
    var p = $(this).parent();
    $(".ui-selected").each(obj, function() {
      if(obj.parent() == p) {
        // get rad
      }
    });
  }
});

Ответ 2

Вы должны использовать выбранное и невыбранное событие, которое запускается для каждого выбранного элемента при выборе группы.

var selected = new Array();
$("#selectable").selectable({
    selected: function(event, ui){            
        selected.push(ui.selected.id);
    },
    unselected: function(event, ui){
        //ui.unselected.id
    }
});

Ответ 3

Используя :last или :first, выбор не первый, а первый по порядку li

Это решение, которое мне удалось:

HTML

<ol class="selectable">                            
     <li class="ui-widget-content" 
        id="selectable_1"
        value="1"
     > First Selectable </li>
     <li class="ui-widget-content" 
        id="selectable_2"
        value="2"
     > Second Selectable </li>
</ol>  

В этом коде я дал li id и значение, что делает их доступными для свойства ui события выбора

JAVASCRIPT

//A place to put the last one
var last_selected_value;
var last_selected_id;


$( ".selectable" ).selectable({
    selecting: function(event, ui) {

        //In the selection event we can know wich is the last one, by getting the id on
        //the ui.selecting.property

        last_selected_value = ui.selecting.value;
        last_selected_id = ui.selecting.id;
    },
    stop: function(event, ui) {

        //Here the event ends, so that we can remove the selected
        // class to all but the one we want

        $(event.target).children('.ui-selected').not("#" + last_selected_id)
            .removeClass('ui-selected');

        //We can also put it on a input hidden
        $( "#roles_hidden" ).val(last_selected_value);
    }
});

Ответ 4

это решит вашу проблему:

    <script type="text/javascript">
    $(function() {
        $("#selectable").selectable({
            stop: function(){
                var result = $("#select-result").empty();
                $(".ui-selected", this).each(function(){
                    var index = $("#selectable li").index(this);
                    result.append(" #" + (index + 1));
                });
            }
        });
    });
    </script>


<div class="demo">

<p id="feedback">
You've selected: <span id="select-result">none</span>.
</p>

<ol id="selectable">
    <li class="ui-widget-content">Item 1</li>
    <li class="ui-widget-content">Item 2</li>
    <li class="ui-widget-content">Item 3</li>
    <li class="ui-widget-content">Item 4</li>
    <li class="ui-widget-content">Item 5</li>
    <li class="ui-widget-content">Item 6</li>
</ol>

просмотрите http://jqueryui.com/demos/selectable/#serialize для получения дополнительной информации

Ответ 5

аргумент ui в этом случае является ссылкой на элемента, если это было выбранное событие ui.selected event будет элементом, если он был отменен unselected.ui..... и т.д.