javascript - jQuery 按类显示隐藏父项

标签 javascript jquery html css

我无法根据单击列表项的按钮来切换(显示/隐藏)div。

当我尝试时,它会同时影响所有 div。这是我的代码。我想要切换每个元素的基础。

<div class="list-item">
    <div class="list-content">
        <div class="list-updates">
            <a href="#" class="list-avatar"><img
                        src="images/avatar/avatar_<?php echo ( $i <= 8 ? '0' : NULL ) . $avatars[ $i ] ?>.jpg"
                        alt="user-avatar" width="40"
                        height="40"></a>
            <a href="#"><i class="material-icons"><?php echo get_icon( $update[ $i ] ) ?></i></a>
        </div>
        <div class="item-title"><a href="#"><?php echo $questions[ $i ] ?></a>
        </div>
        <div class="ans-box">
            <div class="ans-count"><?php echo $ans[ $i ] ?></div>
            <span><i class="material-icons meta-info-btn">keyboard_arrow_down</i></span>
        </div>
    </div>

    <div class="metas">
        <div class="update-info"><a href="#">commented</a> 1 hour ago in <a href="#">Plugins</a> by
            <a href="#">gurjyot</a>
        </div>
        <div class="counters">
            <span class="votes"><i class="material-icons">arrow_upward</i> +1245</span>
            <span class="views"><i class="material-icons">remove_red_eye</i> 50.2k</span>
        </div>
    </div>
</div><!-- list-item -->

$('.list-content .meta-info-btn').click(function () {
    alert('Clicked and found!');
    $(this).closest('.metas').slideToggle();
});

最佳答案

尝试 float 到最近的顶部父级 div,然后使用查找。

$(this).closest('.list-item').find(".metas").toggle();

// add some data...

var x = "";

for(var i = 0; i < 5; i++){
  x += "<div class='list-item'>\
	<div class='list-content'>\
		<div class='list-updates'><a href='#'>img</a></div>\
		<div class='item-title'><a href='#'>Question goes here....?</a></div>\
		<div class='ans-box'>\
		  <div class='ans-count'>Answer goes here....</div>\
		  <span><i class='material-icons meta-info-btn'>hide meta </i></span>\
		</div>\
	</div>\
  <div class='metas'> META INFO HERE </div>\
</div>\
";
}

$("#contents").append(x);
// ----------------------------------

$('.list-content .meta-info-btn').click(function() {
  $(this).closest('.list-item').find(".metas").toggle();
});
div {
  margin: 5px;
}
.meta-info-btn:hover {
  cursor: pointer;
}
.meta-info-btn {
  background: #CCC;
  border: 1px solid #999;
  padding: 2px;
  margin: 5px;
}

.list-item {
  margin-bottom: 10px;
  border: 1px solid black;
  padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="contents"></div>

关于javascript - jQuery 按类显示隐藏父项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47259957/

相关文章:

javascript - 如何用js/jquery从下数到上数?

javascript - 使用 Leaflet 设置 GeometryCollection 类型中几何图形的样式

javascript - 如何使用 Object.assign() 函数复制/覆盖对象?

javascript - Bootstrap 表动态添加行 Javascript

jquery - 根据 ID 的点击显示隐藏 div 面板

javascript - 五分之二的前两张图片没有点击,但只在 Chrome 中

html - 可以包含脚本标签的跨浏览器 XML 数据岛

javascript - Rails 使 flash[] 在 Javascript 重新加载时显示

javascript - 为什么警报功能不显示每个索引

javascript - 如何使用JQuery获取tr值