我有一系列可选的项目。我想在某处添加一个按钮,激活其中的预设选择。我有办法做到吗?
我想要的是告诉它“选择这些家伙”,然后将所有事件和所有事件全部解雇,所以我不必手动调用所有这些选择事件。
更多信息:我所谈论的事件是their api和their demo page中列出的事件:
而且,我认为在选择时可能会设置/清除数据。所以不只是添加那些css类。
答案 0 :(得分:25)
以下是使用多个元素的Alex R代码的变体
function SelectSelectableElements (selectableContainer, elementsToSelect)
{
// add unselecting class to all elements in the styleboard canvas except the ones to select
$(".ui-selected", selectableContainer).not(elementsToSelect).removeClass("ui-selected").addClass("ui-unselecting");
// add ui-selecting class to the elements to select
$(elementsToSelect).not(".ui-selected").addClass("ui-selecting");
// trigger the mouse stop event (this will select all .ui-selecting elements, and deselect all .ui-unselecting elements)
selectableContainer.data("selectable")._mouseStop(null);
}
更新:
jQueryUI 1.10,来自kmk的评论:http://jsfiddle.net/XYJEN/163/
答案 1 :(得分:14)
假设jQuery UI网站上的可选样本(http://jqueryui.com/demos/selectable/):
<style>
#feedback { font-size: 1.4em; }
#selectable .ui-selecting { background: #FECA40; }
#selectable .ui-selected { background: #F39814; color: white; }
#selectable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
#selectable li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
</style>
<script>
$(function() {
$( "#selectable" ).selectable();
});
</script>
<div class="demo">
<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>
<li class="ui-widget-content">Item 7</li>
</ol>
</div><!-- End demo -->
您可以拥有以下功能:
function selectSelectableElement (selectableContainer, elementToSelect)
{
// add unselecting class to all elements in the styleboard canvas except current one
jQuery("li", selectableContainer).each(function() {
if (this != elementToSelect[0])
jQuery(this).removeClass("ui-selected").addClass("ui-unselecting");
});
// add ui-selecting class to the element to select
elementToSelect.addClass("ui-selecting");
selectableContainer.selectable('refresh');
// trigger the mouse stop event (this will select all .ui-selecting elements, and deselect all .ui-unselecting elements)
selectableContainer.data("selectable")._mouseStop(null);
}
并使用它:
// select the fourth item
selectSelectableElement (jQuery("#selectable"), jQuery("#selectable").children(":eq(3)"));
这可以改进以允许选择元素集合,但它是让你前进的起点。
答案 2 :(得分:4)
你去:
,calc: function() { this._mouseStop(); },
custom: function(guys) {
var self = this;
self.selectees.removeClass("ui-selected");
guys.each(function(){
$(this).addClass("ui-selecting");
self._trigger("selecting", {}, {
selecting: this
});
});
this.calc(); // do the selection + trigger selected
}
在_mouseStop
selectable.js
之后添加此内容,然后您可以说:
$("#selectable").selectable("custom", $("#selectable :first-child"));
......或者你喜欢什么。
有趣! :)
答案 3 :(得分:2)
编辑:对不起有误,我正在编辑我的答案。
所以,是的,对象的选择可能对应于ui选择的类,所以你可以做的是:
$(#button).click(function(){
$("#element1").addClass("ui-selected");
.......
});
答案 4 :(得分:0)
是否无法使用.trigger('selected')手动触发selected
事件?
答案 5 :(得分:0)
使用Ionut代码,如何:
$("#selectable li:first").trigger('start').trigger('selecting').trigger('selected');