我在HTML下拉菜单中有一系列项目需要使用jQuery查找,因此我可以隐藏它们[使用.css('display', 'none')
]。
它们(在此示例中)是<option>---- Articles</option>
和<option>---- Jargon Buster</option
之间的所有内容&gt; 除了此范围内的前六项!
除了前六个之外,此范围内所有其他选项的数量和文本将有所不同(除了领先的------
)。
我想也许我可以以某种方式使用选择器$("#edit-menu-parent option:contains('---- Articles')"
和$("#edit-menu-parent option:contains('---- Jargon Buster')"
,但我不确定如何使用它们来获取它们之间的项目。
有什么想法吗?
<select id="edit-menu-parent" class="form-select menu-title-select" name="menu[parent]">
<option>---- Clients</option>
<option>---- Testimonials</option>
<option>-- Resources</option>
<option>---- Articles</option>
<option>------ Accessibilty Articles</option>
<option>------ Usability Articles</option>
<option>------ Charities Articles</option>
<option>------ Public Sector Articles</option>
<option>------ Web Development Articles</option>
<option>------ Social Media Articles</option>
<option>------ Are Your Online Forms</option>
<option>------ Benefits of Web Standards</option>
<option>------ Benefits of web accessibility</option>
<option>------ Increase Donations to Your</option>
<option>------ Need More Web Traffic? Get</option>
<option>------ The Secret to Successful ALT</option>
<option>------ Top 10 Email Marketing Tips</option>
<option>------ What PAS 78 Means for Your</option>
<option>------ What is Web Accessibility?</option>
<option>---- Jargon Buster</option>
<option>---- Web Design Tips</option>
<option>------ Colour blindness</option>
<option>------ Create a custom 404 page</option>
<option>------ Download time and usability</option>
<option>------ Full stop to the end of alt</option>
<option>------ Javascript and navigation</option>
<option>---- Your Industry News</option>
</select>
答案 0 :(得分:3)
在我的测试HTML文件中,我尝试了调用.hide()
和.css("display", "none")
,但它们似乎都没有在Safari(Mac)中运行,但在Firefox(Mac)中按预期工作。
首先我认为jQuery选择器是错误的,但即使我只选择#edit-menu-parent option
也会出现相同的情况。
我创建了一个脚本,找到了开始和结束元素的索引,然后slice()
- 找出了删除所需的项目。但是,我使用remove()
,否则不起作用。既然有人说前六个元素必须保留在那里,那我就有start+6
。
var options = $("#edit-menu-parent option");
var start = options.index( $("option:contains(---- Articles)" ));
var end = options.index( $("option:contains(---- Jargon Buster)" ));
options.slice(start+6,end).remove();
答案 1 :(得分:2)
您描述的:contains方法应该有效。我不知道为什么不。
OPTION
只是父元素的普通子元素,并且所有JQuery的过滤可能性都应该没有限制地应用。
答案 2 :(得分:2)
您是否考虑过将您的下拉列表分组?
<select>
<optgroup label="Swedish Cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
</optgroup>
<optgroup label="German Cars">
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</optgroup>
</select>
然后你可以隐藏/显示整个组?
答案 3 :(得分:1)