如果匹配span标记中的内容,如何使用jquery设置select选项?

时间:2016-05-16 23:55:17

标签: jquery html-select

我有一个下拉选择/选项元素,其中包含艺术家列表:

<select id="taxonomy_dropdown_widget_dropdown_2"  onchange="document.location.href=this.options[this.selectedIndex].value;"  class="taxonomy_dropdown_widget_dropdown" name="taxonomy_dropdown_widget_dropdown_2">
<option value="">Browse Artists</option>
<option value="http://dev/artist-tag/a-aublet/">A. Aublet (1)</option>
<option value="http://dev/artist-tag/a-carie-baron/">A. Carie Baron (1)</option>
</select>

如果您单击该艺术家的某个图像,则导航到单个页面。位于该页面的是这个html:

<span class="tagged_as"><span>Artist:</span> <a rel="tag" href="http://dev/artist-tag/a-aublet/">A. Aublet</a></span>

标签中的名称几乎与选项select中的名称相匹配,但它没有(1)。

我想使用jquery检查页面上的名称(.tagged_as a)并选择与其匹配的选项。

这里大致是我想做的事情(但它不起作用):

var artistName = document.querySelector("span.tagged_as > a");

if ( artistName ) { 

var artistNamevalue = artistName.innerHTML ; 

$('#taxonomy_dropdown_widget_dropdown_2 option').filter(function() {

return this.text == artistNamevalue; 

}).attr('selected', true);

}

这是我正在尝试的小提琴:https://jsfiddle.net/1w4qx4ne/

'浏览艺术家'下拉列表应该说:A。Aublet

1 个答案:

答案 0 :(得分:1)

由于您没有完全匹配artistName(您只需要检查文本是否包含artistName的子字符串),因此一种解决方案是使用text.indexOf()。这是代码:

$('#taxonomy_dropdown_widget_dropdown_2 option').filter(function() {
  return (this.text.indexOf(artistNamevalue) >= 0); 
}).attr('selected', 'selected');

小提琴https://jsfiddle.net/1w4qx4ne/1/