每个按钮后的JQUERY第一个元素

时间:2016-05-29 13:27:33

标签: javascript jquery magento

<button> Show </button>
<ol style="display:none;">
<?php foreach ($this->getItems() as $_item): ?>
    <li>
        <?php if ($_item->getCount() > 0): ?>
            <a href="<?php echo $this->urlEscape($_item->getUrl()) ?>">
                <?php echo $_item->getLabel() ?>
                <?php if ($this->shouldDisplayProductCount()): ?>
                <span class="count">(<?php echo $_item->getCount() ?>)</span>
                <?php endif; ?>
            </a>
        <?php else: ?>
            <span>
                <?php echo $_item->getLabel(); ?>
                <?php if ($this->shouldDisplayProductCount()): ?>
                    <span class="count">(<?php echo $_item->getCount() ?>)</span>
                <?php endif; ?>
            </span>
        <?php endif; ?>
    </li>
<?php endforeach ?>
</ol>

我有以下代码,这打印过滤器magento我想显示/隐藏过滤器。这打印很多次按钮 - &gt; ol过滤器按钮 - &gt;来自过滤器的ol。我想做到这一点:当我点击按钮时,我只想在按钮后面显示或隐藏第一个ol。我需要帮助谢谢!

2 个答案:

答案 0 :(得分:1)

使用 next() 方法选择紧随其后的兄弟

$('button').click(function() {
  $(this)
    .next() // get immediately next sibling
    .toggle(); // toggle the visible states
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Show</button>
<ol style="display:none;">
  <li>list
    <li>
</ol>
<button>Show</button>
<ol style="display:none;">
  <li>list
    <li>
</ol>
<button>Show</button>
<ol style="display:none;">
  <li>list
    <li>
</ol>
<button>Show</button>
<ol style="display:none;">
  <li>list
    <li>
</ol>

答案 1 :(得分:1)

作为使用jQuery next()的替代方法您也可以使用Div标签包装Button和Ol对。那样,什么时候需要在Button和Ol JS代码之间添加一些标记仍然有用。

<div class="filters-box">
    <button>...</button>
    <ol>...</ol>
</div>

然后添加点击事件,如下所示:

$('.filters-box button').click(function() {
    var $button = $(this),
        $box = $button.parent(),
        $options = $box.find('ol');

    $options.toggle();
});

稍微多一些代码,但需要扩展更具弹性。这种包装物对于定位元件也是便利的。在这个问题上不要做出臭名昭着的“分裂”是个案例。