2016-05-29 49 views
1
<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中的过滤器我想显示/隐藏过滤器。这会从过滤器打印多次按钮 - > ol过滤器按钮 - > ol。我想这样做:当我点击按钮时,我只想要第一个ol按钮后显示或隐藏。我需要帮助谢谢!JQUERY每个按钮之后的第一个元素

+0

删除'php'代码,只写html结果。 – Mohammad

回答

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>

+0

谢谢,这项工作,但我怎么也可以在第二次点击后隐藏。 –

+0

@ИванЖелев:使用切换,更新 –

1

作为替代品使用jQuery的next()您还可以通过的div标签包装巴顿和011对。这样当需要在Button和Ol之间添加一些标记时,JS代码仍然可以工作。

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

然后加入单击事件是这样的:

一点点的代码,但它是更有弹性,以在需要延长。这样的包装也可以用于定位元件。不要让臭名昭着的“分裂”脱离这个问题。

相关问题