单击它时不显示选项

时间:2015-11-08 13:53:37

标签: javascript jquery html css

我正在制作一个选项按钮(右上方的树点)。单击它时,必须显示选项。再次单击,隐藏选项。下面是我的代码,但它不起作用。你能看一下吗?

$("body").ready(function () {
    $(document).on("click", ".options-knop", function() {

        if (this.nextSibling.style.display == "none"){
            this.nextSibling.style.display = 'block !important';
        } else {
            this.nextSibling.style.display = 'none';
        }
    });
});
.img-wrapper {
    width: 100px;
    height: 100px;
    overflow: hidden;
    border-radius: 100%;
    float: left;
    margin: 5px;
}

.img-container {
    height: 100px;
}

.artist {
    transition: background-color 0.5s, color 0.5s;
    cursor: pointer;
}

.artist-outer {
    margin: 5px 0;
    padding: 10px 5px;
}

.artist .naam {
    width: 190px;
}

.options-knop {
    position: absolute;
    top: 15px;
    left: 325px;
    text-align: center;
    line-height: 30px;
    font-weight: bold;
    width: 30px;
    height: 30px;
    border-radius: 100%;
    color: black !important;
    transition: background-color 0.5s, color 0.5s;
}

.artist-outer:nth-child(6n+4),
.artist-outer:nth-child(6n+5),
.artist-outer:nth-child(6n+6) {
    background-color: #eeeeee;
}

.artist:nth-child(6n+4) .options-knop,
.artist:nth-child(6n+5) .options-knop,
.artist:nth-child(6n+6) .options-knop {
    background-color: white;
}
.artist:nth-child(6n+1) .options-knop,
.artist:nth-child(6n+2) .options-knop,
.artist:nth-child(6n+3) .options-knop {
    background-color: #eeeeee;
}

.options-knop:hover{
    background-color: #a3a3a3 !important;
    color: white !important;
}

.artist-outer:hover{
    background-color: #545454 !important;
    color: white !important;
}

.options-list {
    display: none;
    position: absolute;
    z-index: 1;
    top: 50px;
    left: 260px;
}

.options-list ul {
    padding: 0;
}

.naam {
    max-height: 40px;
    overflow: hidden;
}

.list-group {
    padding-left: 0;
    margin-bottom: 20px
}

.list-group-item {
    position: relative;
    display: block;
    padding: 10px 15px;
    margin-bottom: -1px;
    background-color: #fff;
    border: 1px solid #ddd
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<div class='clearfix col-md-4 artist-outer' id='656556255'>
    <div class='artist'>
        <div class='artist-info'>
            <div class='img-wrapper'>
                <img style="width:100px" src='http://i.stack.imgur.com/kYnSM.gif'/>
            </div>
            <p class='naam'><b>Random naam</b></p>
            <p>Volgers op Spotify: XXX</p>
        </div>
        <div class='options-knop'>...</div>
        <div class='options-list list-group' style='display: none;'>
            <a class='list-group-item'>Toon albums</a>
            <a class='list-group-item'>Profiel</a>
        </div>
    </div>
</div>

4 个答案:

答案 0 :(得分:1)

因为您正在使用JQuery,所以您可以使用 css() 功能:

if ( $(this).next().css('display') == "none")
     $(this).next().show();
else
     $(this).next().hide();

或者只是使用 toggle() 切换div show/hide的显示而不使用条件:

$(this).next().toggle();

希望这有帮助。

答案 1 :(得分:1)

您可能想要使用jQuery.toggle

$(document).ready(function () {
    $(document).on("click", ".options-knop", function() {
        $(this.nextSibling).toggle( );
    });
});

答案 2 :(得分:1)

&#13;
&#13;
$(document).ready(function () {
  $('.options-knop').click(function (e)
     {
        $('.options-list').toggle();
   });
});
&#13;
.img-wrapper {
    width: 100px;
    height: 100px;
    overflow: hidden;
    border-radius: 100%;
    float: left;
    margin: 5px;
}

.img-container {
    height: 100px;
}

.artist {
    transition: background-color 0.5s, color 0.5s;
    cursor: pointer;
}

.artist-outer {
    margin: 5px 0;
    padding: 10px 5px;
}

.artist .naam {
    width: 190px;
}

.options-knop {
    position: absolute;
    top: 15px;
    left: 325px;
    text-align: center;
    line-height: 30px;
    font-weight: bold;
    width: 30px;
    height: 30px;
    border-radius: 100%;
    color: black !important;
    transition: background-color 0.5s, color 0.5s;
}

.artist-outer:nth-child(6n+4),
.artist-outer:nth-child(6n+5),
.artist-outer:nth-child(6n+6) {
    background-color: #eeeeee;
}

.artist:nth-child(6n+4) .options-knop,
.artist:nth-child(6n+5) .options-knop,
.artist:nth-child(6n+6) .options-knop {
    background-color: white;
}
.artist:nth-child(6n+1) .options-knop,
.artist:nth-child(6n+2) .options-knop,
.artist:nth-child(6n+3) .options-knop {
    background-color: #eeeeee;
}

.options-knop:hover{
    background-color: #a3a3a3 !important;
    color: white !important;
}

.artist-outer:hover{
    background-color: #545454 !important;
    color: white !important;
}

.options-list {
    display: none;
    position: absolute;
    z-index: 1;
    top: 50px;
    left: 260px;
}

.options-list ul {
    padding: 0;
}

.naam {
    max-height: 40px;
    overflow: hidden;
}

.list-group {
    padding-left: 0;
    margin-bottom: 20px
}

.list-group-item {
    position: relative;
    display: block;
    padding: 10px 15px;
    margin-bottom: -1px;
    background-color: #fff;
  color:black;
    border: 1px solid #ddd
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<div class='clearfix col-md-4 artist-outer' id='656556255'>
    <div class='artist'>
        <div class='artist-info'>
            <div class='img-wrapper'>
                <img style="width:100px" src='http://i.stack.imgur.com/kYnSM.gif'/>
            </div>
            <p class='naam'><b>Random naam</b></p>
            <p>Volgers op Spotify: XXX</p>
        </div>
        <div class='options-knop'>...</div>
        <div class='options-list list-group' style='display: none;'>
            <a class='list-group-item'>Toon albums</a>
            <a class='list-group-item'>Profiel</a>
        </div>
    </div>
</div>
&#13;
&#13;
&#13;

答案 3 :(得分:1)

首先,对我来说,如果不需要,我不想将jquery与纯Javascript混合

在你的代码中使用

$(document).ready();

而不是

$("body").ready

并使用

$("body").on();

而不是

$(document).on()

要使用jquery获取下一个元素,你需要使用 .next(); ..所以jquery代码应该是这样的

$(document).ready(function () {
    $("body").on("click", ".options-knop", function() {

        $(this).next('.options-list').slideToggle();

    });
});