Javascript 在同一optgroup中选择的le选项 //->使用组 当前组=组; }否则{ //跨多个OptGroup选择的多个选项 //->使用最后一个optgroup currentGroup=groups.last(); } } $(选择).data('toggleKey',null); 如果(当前组!==null){ $('optgroup',select).not(currentGroup).children(':selected').attr('selected',false); $(当前组).children(':not(:selected)).attr('selected',true); 应用(选择,参数); } };
它的工作原理是将先前选择的组和选项存储在Javascript 在同一optgroup中选择的le选项 //->使用组 当前组=组; }否则{ //跨多个OptGroup选择的多个选项 //->使用最后一个optgroup currentGroup=groups.last(); } } $(选择).data('toggleKey',null); 如果(当前组!==null){ $('optgroup',select).not(currentGroup).children(':selected').attr('selected',false); $(当前组).children(':not(:selected)).attr('selected',true); 应用(选择,参数); } };,javascript,jquery,html,Javascript,Jquery,Html,它的工作原理是将先前选择的组和选项存储在select元素上,并确定应选择(或取消选择)哪个optgroup 某些行为可以根据开发人员的需要进行更改。例如,在选择跨越多个optgroup的多个选项的情况下(通过单击并向下拖动,如屏幕截图所示): 这种情况下的默认冲突解决方案是始终使用最后一个optgroup,但可以更改为始终使用第一个,或使用已选择选项最多的optgroup。 <script src="http://ajax.googleapis.com/ajax/libs/jqu
select
元素上,并确定应选择(或取消选择)哪个optgroup
某些行为可以根据开发人员的需要进行更改。例如,在选择跨越多个optgroup
的多个选项的情况下(通过单击并向下拖动,如屏幕截图所示):
这种情况下的默认冲突解决方案是始终使用最后一个optgroup
,但可以更改为始终使用第一个,或使用已选择选项最多的optgroup
。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
$(document).ready(function() {
$('select').click(function(tar) {
var justClickValue = tar.target.value;
var selectedGroup = $('option[value="'+justClickValue+'"]').parent();
if (selectedGroup.hasClass("allSelected")) {
selectedGroup.removeClass("allSelected");
$("option").each(function() {
$(this).removeAttr("selected");
});
} else {
$(".allSelected").removeClass("allSelected");
selectedGroup.addClass("allSelected");
$(".allSelected option").each(function() {
$(this).attr("selected", "selected");
});
}
});
});
$(文档).ready(函数(){
$('select')。单击(函数(tar){
var justClickValue=tar.target.value;
var selectedGroup=$('option[value=“”+justClickValue+'“]')。parent();
if(selectedGroup.hasClass(“allSelected”)){
selectedGroup.removeClass(“全部选定”);
$(“选项”)。每个(函数(){
$(此).removeAttr(“选定”);
});
}否则{
$(.allSelected”).removeClass(“allSelected”);
selectedGroup.addClass(“allSelected”);
$(“.allSelected选项”).each(函数(){
$(this.attr(“选定的”、“选定的”);
});
}
});
});
这不是对选择选项跨浏览器问题的回答,我认为这已经得到了回答,但选择数据并将其传递回服务器的问题的解决方案是将您的标记更改为更适合多选的标记
如果改为使用复选框,则可以将它们放在列表中,并添加enhanching js以全选和全选
(此小提琴添加了一个父复选框,使其更可用)这不是我想要的。这将选择所有option
组中的所有元素。它应该只选择那些与单击的选项
在同一optgroup
中的。您还缺少live函数的结束括号。这与我想要的无关。我想单击一个选项
而不是一个链接来选择所有选项
这非常适合选择单个选项组,但不适合选择多个选项组。我会更新我的问题,让它更清楚我需要什么。根据我的需要修改代码可能很简单,但不幸的是,我现在没有时间研究它。尽管如此,我还是会给你一个+1的奖励,奖励你迄今为止的工作和关于IE兼容性的信息。很好的替代解决方案!对user.ta来说可能更清楚,我也这么认为。列表框和整个左移/控制按钮的多选功能也不是用户友好的。你有一个层次结构的优势,可以在这里快速选择许多项目,只要看看它就会知道发生了什么
$('select').click(selectSiblings);
function selectSiblings(ev) {
var clickedOption = $(ev.target);
var siblings = clickedOption.siblings();
if (clickedOption.is(":selected")) {
siblings.attr("selected", "selected");
} else {
siblings.removeAttr("selected");
}
}
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js">
$(function(){
$('#allcheck').click(function(){
var chk=$('#select_option >optgroup > option');
chk.each(function(){
$(this).attr('selected','selected');
});
});
$('#alluncheck').click(function(){
var chk=$('#select_option >optgroup > option');
chk.each(function(){
$(this).removeAttr('selected');
});
});});
<select multiple="multiple" size="10" id="select_option" name="option_value[]">
<optgroup label="Queen">
<option value="Mercury">Freddie</option>
<option value="May">Brian</option>
<option value="Taylor">Roger</option>
<option value="Deacon">John</option>
</optgroup>
<optgroup label="Pink Floyd">
<option value="Waters">Roger</option>
<option value="Gilmour">David</option>
<option value="Mason">Nick</option>
<option value="Wright">Richard</option>
</optgroup>
</select>
<br>
<strong>Select <a style="cursor:pointer;" id="allcheck">All</a>
| <a style="cursor:pointer;" id="alluncheck">None</a></strong>
$("#SelectID").live("click",function() {
var elements = this.options; //or document.getElementById("SelectID").options;
for(var i = 0; i < elements.length; i++){
if(!elements[i].selected)
elements[i].selected = true;
}
}
$( '.chzn-results .group-result' ).each( function () {
var self = $( this )
, options = $( '~li', self )
, next = options.filter( '.group-result' ).get( 0 )
;
self.data( 'chzn-options', options.slice( 0, options.index( next ) ) );
} )
.click( function () {
$( this ).data( 'chzn-options' ).mouseup()
} )
.hover( function () {
$( this ).data( 'chzn-options' ).addClass( 'highlighted' );
}, function () {
$( this ).data( 'chzn-options' ).removeClass( 'highlighted' );
} )
.css( { cursor: 'pointer' } )
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
$(document).ready(function() {
$('select').click(function(tar) {
var justClickValue = tar.target.value;
var selectedGroup = $('option[value="'+justClickValue+'"]').parent();
if (selectedGroup.hasClass("allSelected")) {
selectedGroup.removeClass("allSelected");
$("option").each(function() {
$(this).removeAttr("selected");
});
} else {
$(".allSelected").removeClass("allSelected");
selectedGroup.addClass("allSelected");
$(".allSelected option").each(function() {
$(this).attr("selected", "selected");
});
}
});
});
<dl>
<dt>Queen</dt>
<dd>
<ul>
<li>
<input id="Mercury" name="bandmembers" value="Mercury" type="checkbox" />
<label for="Mercury">Freddie</label>
</li>
<li>
<input id="May" name="bandmembers" value="May" type="checkbox" />
<label for="May">Brian</label>
</li>
<li>
<input id="Taylor" name="bandmembers" value="Taylor" type="checkbox" />
<label for="Taylor">Roger</label>
</li>
<li>
<input id="Deacon" name="bandmembers" value="Deacon" type="checkbox" />
<label for="Deacon">John</label>
</li>
</ul>
</dd>
<dt>Pink Floyd</dt> ...
$("dt")
.css("cursor","pointer")
.click(function(){
var $el = $(this).next();
var $checks = $el.find(":checkbox");
if($checks.is(":not(:checked)")){
$checks.attr("checked",true);
}else{
$checks.attr("checked",false);
}
});