jQuery - 在HTML下拉菜单中获取特定范围的项目

时间:2010-01-10 11:43:43

标签: jquery html drupal xhtml

我在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>

4 个答案:

答案 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>

W3 Schools optgroup

然后你可以隐藏/显示整个组?

答案 3 :(得分:1)