Как выбрать выбранные элементы с пользовательским интерфейсом 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..... и т.д.