Sye*_*man 7 jquery select parent-child hide option
好的,让我们从一个例子开始吧.
请记住,这只是一个例子.
<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>
现在,从这里开始,我们有3个选项的下拉列表.
我现在要做的是隐藏一个选项.
添加style = "display:none"将不会帮助.
该选项不会出现在下拉列表中,但使用箭头键,您仍然可以选择它.
从本质上讲,它完全符合代码所说的内容.它没有显示,它停在那里.
JQuery函数$("#1").hide()不起作用.
另外,我不仅要隐藏选项,还要完全删除它.
这样做有可能吗?
我是否必须使用父/兄弟/子元素?如果是这样,我仍然不确定如何.
任何有关这方面的帮助将不胜感激.谢谢.
好的,所以我发现.remove()JQuery 中有一个可用的.效果很好.
但是,如果我想把它带回来怎么办?
if(condition)
{
$(this).remove();
}
我可以循环这个.不应该复杂.
但我想要做的是这样的:
最大容量:(此处输入字段)
选择房间:(此处下拉列表)
我想要它做的是使用诸如.change()或之类的函数更新Dropdown .keyup.
我可以在输入内容后创建下拉列表.在更改或密钥更新时,相应地执行下拉列表.
但我正在做的是这样的:
$ 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>";
Run Code Online (Sandbox Code Playgroud)
是的,我知道它非常混乱.
我打算稍后改变它.
但现在的问题是:我可以根据输入的内容切换选项的删除吗?
是否可以通过循环下拉来完成此操作?因为我确定无法继续执行SQL查询.或者甚至是一种选择?因为如果可能,我仍然认为这是一个糟糕的.
hide()不适用于Chrome ...我一直在尝试解决方法并将其包装在一个名为"ExtraBox"的插件中.我们的想法是临时存储选项,以便我们可以通过操作DOM来启用/禁用它们.我已经创建了插件,使其更易于使用.
我已经在jsFiddle上发布了代码,所以你可以自己试试:http://jsfiddle.net/KeesCBakker/HaFRC/.[注意:在jsFiddle中的第一个项目,我很喜欢它!]
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>
Run Code Online (Sandbox Code Playgroud)
我已经将以下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()
);
});
Run Code Online (Sandbox Code Playgroud)
插件看起来像这样:
(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, function(i, 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);
Run Code Online (Sandbox Code Playgroud)