简体   繁体   English

显示/隐藏具有基于数据属性的id的div(onclick)

[英]show/hide div with id based on data attribute (onclick)

I have the following List: 我有以下列表:

<ul>
    <li><a href="" class="active" data-related="main">Main</a></li>
    <li><a href="" data-related="title_1">Title 1</a></li>
    <li><a href="" data-related="title_2">Title 2</a></li>
    <li><a href="" data-related="title_3">Title 3</a></li>
    <li><a href="" data-related="title_4">Title 4</a></li>
</ul>

And the following div structure: 以下div结构:

<div id="main">... Content ...</div>
<div id="title_1">... Content ...</div>
<div id="title_2">... Content ...</div>
<div id="title_3">... Content ...</div>
<div id="title_4">... Content ...</div>

At the beginning all div's are visible. 在开始时,所有div都是可见的。 (Because of Google and for User without JS) (因为Google和没有JS的用户)

If the page is loaded, all except the main div should be hidden. 如果页面已加载,则应隐藏除主div之外的所有页面。 If I'm clicking on the navigation point with the data attribute "title_1" the related div should be visible and the main div should be hidden also. 如果我点击带有数据属性“title_1”的导航点,相关的div应该是可见的,主div也应该被隐藏。 Also the class active should jump to the new active navigation point. 此类活动应该跳转到新的活动导航点。 :) :)

Is that possible? 那可能吗? I don't know how to get the solution for this problem. 我不知道如何解决这个问题。

Thanks for your help! 谢谢你的帮助!

You can use on click event on a elements inside ul li and get the attribute data-related . 您可以在ul li内的元素上使用click事件并获取与data-related的属性。 Then you can use this and find div with id same as data-related and toggle(hide/show or anything else): 然后你可以使用它并找到id与data-related div并切换(隐藏/显示或其他任何东西):

 $("ul li a").on("click", function() { $("div[id=" + $(this).attr("data-related") + "]").toggle(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li><a href="#" class="active" data-related="main">Main</a> </li> <li><a href="#" data-related="title_1">Title 1</a> </li> <li><a href="#" data-related="title_2">Title 2</a> </li> <li><a href="#" data-related="title_3">Title 3</a> </li> <li><a href="#" data-related="title_4">Title 4</a> </li> </ul> <div id="main">... Content ...</div> <div id="title_1">... Content ...</div> <div id="title_2">... Content ...</div> <div id="title_3">... Content ...</div> <div id="title_4">... Content ...</div> 

Another example with addClass/removeClass: addClass / removeClass的另一个例子:

 $("ul li a").on("click", function() { $("div").removeClass("activeLnk"); $("div[id=" + $(this).attr("data-related") + "]").addClass("activeLnk"); }); 
 .activeLnk { background: red; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li><a href="#" class="active" data-related="main">Main</a> </li> <li><a href="#" data-related="title_1">Title 1</a> </li> <li><a href="#" data-related="title_2">Title 2</a> </li> <li><a href="#" data-related="title_3">Title 3</a> </li> <li><a href="#" data-related="title_4">Title 4</a> </li> </ul> <div id="main">... Content ...</div> <div id="title_1">... Content ...</div> <div id="title_2">... Content ...</div> <div id="title_3">... Content ...</div> <div id="title_4">... Content ...</div> 

you could match the ID with the data-attr like this: 你可以将ID与data-attr匹配,如下所示:

$("div").each(function(){
     $(this).hide();
    if($(this).attr('id') == 'main') {
        $(this).show();
    }
});

$('a').on( "click", function(e) {
    e.preventDefault();
    var id = $(this).attr('data-related'); 
    $("div").each(function(){
        $(this).hide();
        if($(this).attr('id') == id) {
            $(this).show();
        }
    });
});

http://jsfiddle.net/mcko06ht/ http://jsfiddle.net/mcko06ht/

Add a class to this html code : 在此html代码中添加一个类:

<div id="main" class="tab">... Content ...</div>
<div id="title_1" class="tab">... Content ...</div>
<div id="title_2" class="tab">... Content ...</div>
<div id="title_3" class="tab">... Content ...</div>
<div id="title_4" class="tab">... Content ...</div>

Put this in a script tag : 把它放在脚本标签中:

$('ul a').click(function(e){
            $('ul li').removeClass('actif');
            $(this).find('li').addClass('actif');
            $('.tab').hide();
            $('#'+$(this).attr('data-related')).show();
           //This is also valid
           //$('#'+$(this).data('related')).show();
            e.preventDefault();
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM