好的,让我们从一个例子开始吧.
请记住,这只是一个例子.
我现在要做的是隐藏一个选项. @H_404_4@添加style =“display:none”无济于事.
该选项不会出现在下拉列表中,但使用箭头键,您仍然可以选择它.
从本质上讲,它完全符合代码所说的内容.它没有显示,它停在那里. @H_404_4@$(“#1”).JQuery()的JQuery函数不起作用.
另外,我不仅要隐藏选项,还要完全删除它. @H_404_4@这样做有可能吗?
我必须使用父/兄弟/子元素吗?如果是这样,我仍然不确定如何. @H_404_4@任何有关这方面的帮助将不胜感激.谢谢. @H_404_4@另一个问题 – 它是相关的 @H_404_4@好的,所以我发现JQuery中有一个.remove().效果很好.
但是,如果我想把它带回来怎么办?
但我想要做的是这样的: @H_404_4@最大容量:(此处输入字段)
选择房间:(在这里下拉) @H_404_4@我想要它做的是使用.change()或.keyup等函数更新Dropdown.
我只能在输入内容后创建下拉列表.在更改或键盘上,相应地执行下拉列表.
但我正在做的是这样的:
我打算稍后改变它. @H_404_4@但现在的问题是:我可以根据输入的内容切换选项的删除吗?
是否可以通过循环下拉来实现?因为我确定地狱不能继续执行SQL查询.或者甚至是一个选择?因为如果可能,我仍然认为这是一个糟糕的.
请记住,这只是一个例子.
@H_404_4@@H_404_4@现在,从这里开始,我们有3个选项的下拉列表.<select id = "selection1">
<option value = "1" id = "1">Number 1</option>
<option value = "2" id = "2">Number 2</option>
<option value = "3" id = "3">Number 3</option>
</select>
我现在要做的是隐藏一个选项. @H_404_4@添加style =“display:none”无济于事.
该选项不会出现在下拉列表中,但使用箭头键,您仍然可以选择它.
从本质上讲,它完全符合代码所说的内容.它没有显示,它停在那里. @H_404_4@$(“#1”).JQuery()的JQuery函数不起作用.
另外,我不仅要隐藏选项,还要完全删除它. @H_404_4@这样做有可能吗?
我必须使用父/兄弟/子元素吗?如果是这样,我仍然不确定如何. @H_404_4@任何有关这方面的帮助将不胜感激.谢谢. @H_404_4@另一个问题 – 它是相关的 @H_404_4@好的,所以我发现JQuery中有一个.remove().效果很好.
但是,如果我想把它带回来怎么办?
@H_404_4@if(condition)@H_404_4@我可以循环这个.不应该复杂.
{
$(this).remove();
}
但我想要做的是这样的: @H_404_4@最大容量:(此处输入字段)
选择房间:(在这里下拉) @H_404_4@我想要它做的是使用.change()或.keyup等函数更新Dropdown.
我只能在输入内容后创建下拉列表.在更改或键盘上,相应地执行下拉列表.
但我正在做的是这样的:
@H_404_4@$roomarray = MysqL_query(“SELECT *
FROM
(
SELECT *,
CASE
WHEN type = ‘Classroom’ THEN 1
WHEN type = ‘Computer laboratory’ THEN 2
WHEN type = ‘Lecture Hall’ THEN 3
WHEN type = ‘Auditorium’ THEN 4
END AS ClassTypeValue
FROM rooms
) t
ORDER BY ClassTypeValue,maxppl,roomID”);
echo "<select id = \"room\">"; while ($rooms = MysqL_fetch_array($roomarray)) { ?> <option value=<?PHP echo $rooms['roomID']; ?> id=<?PHP echo $rooms['roomID']; ?>><?PHP echo $rooms['type']; echo " "; echo $rooms['roomID']; echo " ("; echo $rooms['maxppl']; echo ")"; ?></option> <?PHP } echo "</select>";@H_404_4@是的,我知道它非常混乱.
我打算稍后改变它. @H_404_4@但现在的问题是:我可以根据输入的内容切换选项的删除吗?
是否可以通过循环下拉来实现?因为我确定地狱不能继续执行SQL查询.或者甚至是一个选择?因为如果可能,我仍然认为这是一个糟糕的.
解决方法
hide()不适用于Chrome …我一直在尝试使用解决方法并将其包装在一个名为“ExtraBox”的插件中.我们的想法是临时存储选项,以便我们可以通过操作DOM来启用/禁用它们.我已经创建了插件,使其更易于使用.
@H_404_4@我已经在jsFiddle上发布了代码,所以你可以自己尝试一下:http://jsfiddle.net/KeesCBakker/HaFRC/.[注意:在jsFiddle中的第一个项目,我很喜欢它!]
@H_404_4@Html示例:
Select: <br/> <select id="TestKees"> <option value="1" class="s1">First value</option> <option value="2" class="s2">Second value</option> <option value="3" class="s3">Third value</option> </select> <br/> Enable / Disable <br/> <input id="txt" type="text" value="s2" /> <button id="btnEnable">Enable</button>@H_404_4@我已经将以下jQuery添加到我的document.ready函数中:
$('#TestKees').extraBox({ attribute: 'class' }); $('#btnEnable').click(function(){ $('#TestKees').data('extraBox').enable( $('#txt').val() ); }); $('#btnDisable').click(function(){ $('#TestKees').data('extraBox').disable( $('#txt').val() ); });@H_404_4@这个插件看起来像这样:
(function($) { // Create ExtraBox object function ExtraBox(el,options) { // Default options for the plugin (configurable) this.defaults = { attribute: 'class' }; // Combine default and options objects this.opts = $.extend({},this.defaults,options); // Non-configurable variables this.$el = $(el); this.items = new Array(); }; // Separate functionality from object creation ExtraBox.prototype = { init: function() { var _this = this; $('option',this.$el).each(function(i,obj) { var $el = $(obj); $el.data('status','enabled'); _this.items.push({ attribute: $el.attr(_this.opts.attribute),$el: $el }); }); },disable: function(key){ $.each(this.items,function(i,item){ if(item.attribute == key){ item.$el.remove(); item.$el.data('status','disabled'); } }); },enable: function(key){ var _this = this; $.each(this.items,item){ if(item.attribute == key){ var t = i + 1; while(true) { if(t < _this.items.length) { if(_this.items[t].$el.data('status') == 'enabled') { _this.items[t].$el.before(item.$el); item.$el.data('status','enabled'); break; } else { t++; } } else { _this.$el.append(item.$el); item.$el.data('status','enabled'); break; } } } }); } }; // The actual plugin - make sure to test // that the element actually exists. $.fn.extraBox = function(options) { if (this.length) { this.each(function() { var rev = new ExtraBox(this,options); rev.init(); $(this).data('extraBox',rev); }); } }; })(jQuery);