无法读取未定义的属性“click”。 slideToggle with each()

时间:2015-07-16 00:19:49

标签: javascript jquery html each slidetoggle

我正在尝试制作简单的slideToggle标签,但不幸的是我在控制台中收到错误:

  

无法读取未定义

的属性'click'

我自己发现的是,如果我没有弄错的话,jQuery不会将click()视为一个函数。

我的HTML代码:

<div class="container">           
         <div id="mineUI" class="pull-right">
                <div class="row">
                        <div id="mineUIbtn" class="col-md-4 text-center">
                                Home
                                <div id="UIcontent">blabla</div>
                        </div>
                        <div id="mineUIbtn" class="col-md-4 text-center">
                                Ok
                                <div id="UIcontent">blabla</div>
                        </div>
                        <div id="mineUIbtn" class="col-md-4 text-center">
                                Rem
                                <div id="UIcontent">blabla</div>
                        </div>
                </div>

        </div>
</div> 

我的jQuery代码:

 var mineUI = function() {
var UIcontent = $("div#mineUI > div.row > div#mineUIbtn > #UIcontent");
var mineUIbtn = $("div#mineUI > div.row > div#mineUIbtn");



UIcontent.each(function(){
    $(this).slideUp("fast");
});

  mineUIbtn.each(function(i){
      var current_item = $(this)[i];
      current_item.click(function(){
          UIcontent.slideToggle("fast");
      });
  });
};
$(document).ready(mineUI);

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在.each()中,&#34;这个&#34;是单个元素,而不是集合。所以&#34;这个&#34;等于&#34; mineUIbtn [i]&#34;。错误消息是说它无法读取未定义对象的属性($(this)[i]未定义)。

使用更多代码进行编辑: 你真的不应该给同一个id多个东西。做一个&#34; mineUIbtn&#34; class和a&#34; UIcontent&#34;类。除非您已完成此操作,否则以下代码将无效。

var mineUI = function() {
    $(".UIcontent").slideUp("fast"); 

    $(".mineUIbtn").click(function(){
       $(this).child().slideToggle("fast");
    });
});
$(document).ready(mineUI);

&#34;这&#34;单击处理程序内部引用已单击的特定元素,而不仅仅是所有的mineUIbtn。 .child()返回其所有直接子节点。由于只有一个孩子并且它是UI内容,因此您可以继续并在其上调用.slideToggle()。