Jquery 将属性禁用设置为不包含特定字符串的选项
我知道如果我只能使用optgroup,这应该会更容易。但我正在努力避免黑客攻击我的CMS核心,所以jQuery应该再次出手相救,希望如此 我有时会在层次结构中选择带有选项的选项,我想将属性禁用到任何包含不以破折号开头的文本的选项。 我想编写如下代码: 为选项文本不以破折号(“-”)开头的选择器设置禁用属性。Jquery 将属性禁用设置为不包含特定字符串的选项,jquery,attributes,Jquery,Attributes,我知道如果我只能使用optgroup,这应该会更容易。但我正在努力避免黑客攻击我的CMS核心,所以jQuery应该再次出手相救,希望如此 我有时会在层次结构中选择带有选项的选项,我想将属性禁用到任何包含不以破折号开头的文本的选项。 我想编写如下代码: 为选项文本不以破折号(“-”)开头的选择器设置禁用属性。 <select id="options"> <option value="" selected="selected">- Please choose -</op
<select id="options">
<option value="" selected="selected">- Please choose -</option>
<option value="1">Parent1</option>
<option value="2">-child1</option>
<option value="3">-child2</option>
<option value="4">-child3</option>
<option value="5">-child4</option>
<option value="6">Parent2</option>
<option value="7">-child5</option>
<option value="8">-child6</option>
<option value="9">-child7</option>
<option value="10">-child8</option>
</select>
但到目前为止我似乎做不好
任何帮助都将不胜感激。非常感谢。您可以这样使用:
$("#options option").filter(function() {
return $(this).text().indexOf("-") !== 0;
}).attr('disabled', true);
这将过滤掉所有没有以“-”开头的文本的元素
与您的问题一样,自定义选择器方法是:
$.extend($.expr[':'], {
startsWith: function(a, b, match) {
return $(a).text().indexOf(match[3]) === 0;
}
});
$("#options option:not(:startsWith(-))").attr('disabled', true);
.尼克,你是我的英雄。工作起来很有魅力。这也应该有助于许多CMS用户与这一限制谁可能幸运地发现这一点。非常感谢。顺便说一句,为了学习的目的,我可以把.attr('disabled','disabled'); 还有吗?感谢第二个选项,除了“:not”(:“我被“.not”弄糊涂了)这一部分,我几乎就到了。Thanks@kuswantin-在这种情况下,最好使用.attr('disabled',bool)
和.attr('readonly',bool)
,因为jQuery实际上是在DOM上运行的。disabled=“disabled”
只是设置为真,因为“disabled”!==false
,它将弱类型转换为真。是的,谢谢。希望我从头到脚都清楚地了解这个伟大的软件:)但我很高兴我总是幸运地找到像你这样的帮助。谢谢
$.extend($.expr[':'], {
startsWith: function(a, b, match) {
return $(a).text().indexOf(match[3]) === 0;
}
});
$("#options option:not(:startsWith(-))").attr('disabled', true);