0

我需要了解(这个)是如何工作的。我见过许多使用它的不同案例和实例,但使用方式不同。我只想针对具有类名的几个 div 中的一个。我似乎无法让它正常工作。我已经阅读了 Stackoverflow 中的几个答案,但似乎仍然无法使用 (this) 来定位一个类。再次感谢您帮助我。

js

<script type="text/javascript">
  jQuery(document).ready(function(){
     jQuery('.expandCollapseMenu').click(function(){
      jQuery(this).parent().find('.menu_product_main_container').slideToggle();
    });
  });
</script>

html

<div class="menu_category_category">
    <h3 class="basic_catolog">Beverages</h3>        
    <div class="toggle_menu">
        <img alt="" style="border: 0px none;" src="/images/icons/collapse_menu_icon_on.png" class="expandCollapseMenu {src: '/images/icons/expand_menu_icon.png'}" />
    </div>
</div>
<div class="menu_product_main_container">
    <p>Menu Item 1</p>
    <p>Menu Item 2</p>
</div>
<div class="menu_category_category">
    <h3 class="basic_catolog">Lunch</h3>
    <div class="toggle_menu">
    <img alt="" style="border: 0px none;" src="/images/icons/collapse_menu_icon_on.png" class="expandCollapseMenu {src: '/images/icons/expand_menu_icon.png'}" />
    </div>
</div>
<div class="menu_product_main_container">
    <p>Lunch Item 1</p>
    <p>Lunch Item 2</p>
</div>
4

2 回答 2

1

的值this取决于代码所在的上下文。

在事件处理程序的上下文中(例如传递给 的函数.click()),this将引用触发事件的元素(也称为事件目标)。

在迭代函数的上下文中,例如.each()this将引用当前元素进行迭代。

于 2012-08-13T15:14:02.600 回答
0

它错过了一个.parent()

jQuery(this).parent().find('.menu_product_main_container').slideToggle();这条线你得到<div class="toggle_menu">

所以解决方案是jQuery(this).parent().parent().find('.menu_product_main_container').slideToggle();

编辑 :

好的,缩进我们可以更好地看到问题。一个解决方案可以像这样放置一个新的 div

<div>
  <div class="menu_category_category">
    <h3 class="basic_catolog">Beverages</h3>        
    <div class="toggle_menu">
        <img alt="" style="border: 0px none;" src="/images/icons/collapse_menu_icon_on.png" class="expandCollapseMenu {src: '/images/icons/expand_menu_icon.png'}" />
    </div>
  </div>
  <div class="menu_product_main_container">
    <p>Menu Item 1</p>
    <p>Menu Item 2</p>
   </div>
</div>

如果不更改 DOM,我对您的问题一无所知。

于 2012-08-13T15:09:17.310 回答