jquery hide()在chrome中不起作用

jquery hide()在chrome中不起作用,jquery,Jquery,我使用jquery弹出对话框,在这个对话框中我有输入和选择框,我想在选择框中隐藏一些选项,它在ff中工作,但在chrome中不工作 <input type="text" onkeyup="search(this.value)" > <select id="cl_sel_l" multiple="multiple"> <option value='2' id='c_2'>aa</option> <option value='3'

我使用jquery弹出对话框,在这个对话框中我有输入和选择框,我想在选择框中隐藏一些选项,它在ff中工作,但在chrome中不工作

<input type="text" onkeyup="search(this.value)" >

<select id="cl_sel_l"  multiple="multiple">
   <option value='2' id='c_2'>aa</option>
   <option value='3' id='c_3'>bb</option>
   <option value='4' id='c_4'>cc</option>
   <option value='5' id='c_5'>dd</option>
</select>
显示:jQuery的隐藏函数对匹配元素所做的“无”将不会以可靠的跨浏览器方式对选项元素起作用。相反,您需要从DOM中删除它们,然后在搜索后将它们添加回DOM

这有点棘手,因为您需要存储原始订单。我很想删除不匹配项,然后恢复。大概是这样的:

var clients = new Array();
clients[2] ='aa';
clients[3] ='bb';
clients[4] ='cc';
clients[5] ='dd';
var restore;

function search(val) {
    $('#cl_sel_l').html(restore);
    for ( var i in clients) {
        if (clients[i].toLowerCase().search(val.toLowerCase()) == -1) {
            $("#c_" + i).remove();
        }
    }
}

$(function() { restore = $('#cl_sel_l').html(); });
查看此显示:jQuery的隐藏函数对匹配元素所做的任何操作都不会以可靠的跨浏览器方式对选项元素起作用。相反,您需要从DOM中删除它们,然后在搜索后将它们添加回DOM

这有点棘手,因为您需要存储原始订单。我很想删除不匹配项,然后恢复。大概是这样的:

var clients = new Array();
clients[2] ='aa';
clients[3] ='bb';
clients[4] ='cc';
clients[5] ='dd';
var restore;

function search(val) {
    $('#cl_sel_l').html(restore);
    for ( var i in clients) {
        if (clients[i].toLowerCase().search(val.toLowerCase()) == -1) {
            $("#c_" + i).remove();
        }
    }
}

$(function() { restore = $('#cl_sel_l').html(); });
参见此

jQuery中的.hide函数通过应用CSS display:none规则来工作。此规则不适用于元素

我建议改用.detach函数。这允许您从DOM中删除元素,但它也保留了稍后使用.appendTo将其放回的功能

在调用searchval函数之前,创建一个包含框中所有元素的数组。然后,在每个元素上循环并分离要隐藏的元素。

jQuery中的.hide函数通过应用CSS display:none规则来工作。此规则不适用于元素

我建议改用.detach函数。这允许您从DOM中删除元素,但它也保留了稍后使用.appendTo将其放回的功能


在调用searchval函数之前,创建一个包含框中所有元素的数组。然后,在每个元素上循环并分离要隐藏的元素。

客户机定义在哪里?而且,ID应该是唯一的,因此不需要添加父先决条件。$'c_'+i.隐藏;应该足够了。隐藏怎么不起作用?如果选择了该选项,然后尝试隐藏该选项,则该选项将一直保留,直到选择了另一个选项,尽管它不会显示在“选项”菜单中。您可能应该有一个空白选项,您可以选择它作为默认选项,然后隐藏需要删除的选项。当我从第一个选择中删除选项并附加到第二个选择中,然后进行搜索时,我有另一个选择,它从第二个选择框中隐藏,因此我写$cl\u sel\u l.findc\u+I.hide;客户端在哪里定义?另外,ID应该是唯一的,因此不需要添加父先决条件。$'c_'+i.隐藏;应该足够了。隐藏怎么不起作用?如果选择了该选项,然后尝试隐藏该选项,则该选项将一直保留,直到选择了另一个选项,尽管它不会显示在“选项”菜单中。您可能应该有一个空白选项,您可以选择它作为默认选项,然后隐藏需要删除的选项。当我从第一个选择中删除选项并附加到第二个选择中,然后进行搜索时,我有另一个选择,它从第二个选择框中隐藏,因此我写$cl\u sel\u l.findc\u+I.hide;我刚找到这个:。这不是更好的选择吗?如果有多个select元素,则不需要将它们全部复制,只需为每个元素管理一个列表。我刚刚发现以下内容:。这不是更好的选择吗?如果有多个select元素,则不需要将它们全部复制,只需为每个元素管理一个列表即可。