【发布时间】:2021-06-18 17:49:55
【问题描述】:
我正在尝试使用 javascript 通过特定文本在 wordpress 的搜索下拉菜单中隐藏子类别。到目前为止没有运气。我不是程序员,所以我会感谢您提供指导或修复脚本的帮助。 当我检查页面时,菜单 html 看起来有点像这样(我已经缩小了范围):
<ul>
<li>
<select class="default-select select2-hidden-accessible" name="categories" tabindex="-1" aria-hidden="true">
<option value=""> choose category </option>
<option value="119">Customer Support</option>
<option value="163">Hosting</option>
<option value="181"> - Link Building</option>
</li>
</ul>
当我检查选项时,我得到了这个:
<span class="select2-results">
<ul class="select2-results__options" role="tree" id="select2-categories-85-results" aria-expanded="true" aria-hidden="false">
<li class="select2-results__option" role="treeitem" aria-selected="false"> choose category </li>
<li class="select2-results__option" id="select2-categories-85-result-5nsl-119" role="treeitem" aria-selected="false">Customer Support</li>
<li class="select2-results__option" id="select2-categories-85-result-td3l-163" role="treeitem" aria-selected="false">Hosting</li>
<li class="select2-results__option" id="select2-categories-85-result-c6bv-181" role="treeitem" aria-selected="false"> - Link Building</li>
</ul></span>
我试图隐藏每个包含字符“-”或“--”的 li。 所以经过大量搜索后,我发现了这个 javascript:
let lis = document.getElementsByTagName('li');
for (let x = 0; x < lis.length; x++) {
let li = lis[x];
let content = li.textContent;
if (content.indexOf('-') !== -1 || content.indexOf('--') !== -1) {
li.style.display = 'none';
}
}
问题是当我使用它时,类别菜单完全消失了,类别菜单 html 代码如下所示:
<ul>
<li style="display: none;">
<select class="default-select select2-hidden-accessible" name="categories" tabindex="-1" aria-hidden="true">
<option value=""> choose category </option>
<option value="119">Customer Support</option>
<option value="163">Hosting</option>
<option value="181"> - Link Building</option>
</li>
</ul>
我尝试过使用“getElementsByClassName('select2-results__option')”,但它完全没有任何作用,例如菜单及其内容不受影响。 我怎样才能解决这个问题?感谢您的帮助。
编辑: 搜索部分的 HTML PHP sn-p 如果有帮助:
<ul>
<li>
<div class="form-group">
<input type="text" placeholder="<?php echo __( 'What are you looking for?', 'exertio_theme' ); ?>" class="form-control" name="title" value="<?php echo esc_attr($title_value); ?>">
</div>
</li>
<li>
<select class="default-select" name="categories">
<option value=""> <?php echo __( 'Select Category', 'exertio_theme' ); ?> </option>
<?php echo get_hierarchical_terms('service-categories','', $cat_value ); ?>
</select>
</li>
<li> <button type="submit" class="btn btn-style btn-block"><?php echo __( 'Search', 'exertio_theme' ); ?></button> </li>
</ul>
此外,当我使用以下 css 在下拉菜单中隐藏特定的 li 时,它可以工作(如果有帮助的话):
.select2-results__options > li:nth-child(2) { display: none; }
【问题讨论】:
标签: javascript html wordpress html-lists hide