我有一个下拉选择/选项元素,其中包含艺术家列表:
<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
答案 0 :(得分:1)
由于您没有完全匹配artistName(您只需要检查文本是否包含artistName的子字符串),因此一种解决方案是使用text.indexOf()。这是代码:
$('#taxonomy_dropdown_widget_dropdown_2 option').filter(function() {
return (this.text.indexOf(artistNamevalue) >= 0);
}).attr('selected', 'selected');