使用Jquery显示隐藏单独的div

时间:2015-12-15 18:45:44

标签: javascript jquery html css javascript-events

由于我对Jquery缺乏经验,我发现最简单的任务很难。

我尝试做的是在点击某个图标时显示/隐藏某些消息。这是我的HTML:

<div class="container">
    <div class="row">
        <div class ="col-md-2 pov_icon">
            <div class="pov_icon_small" value="measure">
                <i class="fa fa-clock-o"></i>
            </div>
            <div class="pov_title_small">
                MEASURE
            </div>
        </div>

        <div class ="col-md-2 pov_icon">
            <div class="pov_icon_large" value="locate">
                <i class="fa fa-map-marker"></i>
            </div>
            <div class="pov_title_large">
                LOCATE
            </div>
        </div>

        <div class ="col-md-2 pov_icon">
            <div class="pov_icon_small" value="inform">
                <i class="fa fa-commenting"></i>
            </div>
            <div class="pov_title_small">
                INFORM
            </div>
        </div>

        <div id="measure" style="display:none" class="pov_description">
            <p> Message MESSAGE</p>
        </div>
        <div id="locate" class="pov_description">
            <p> Message LOCATE</p>
        </div>
        <div id="inform" style="display:none" class="pov_description">
            <p> Message INFORM</p>
        </div>

    </div>
</div>

我的javascript代码更改了pov icon/title类的工作原理,目前在这里:

$('.pov_icon_small , .pov_icon_large').on('click', function () {
    $('.pov_icon_large').not($(this)).removeClass('pov_icon_large').addClass('pov_icon_small');
    $('.pov_title_large').not($(this).next('div[class^="pov_title_"]')).removeClass('pov_title_large').addClass('pov_title_small'); 
    $(this).toggleClass("pov_icon_small").toggleClass("pov_icon_large");
    $(this).next('div[class^="pov_title_"]').toggleClass("pov_title_small").toggleClass("pov_title_large");
});

我的目标是,在点击某个图标pov_icon_small value="measure"同时隐藏其他图标时显示某个消息(例如消息测量)。当用户点击另一个图标时;将显示相应的消息,其他消息将被隐藏:

$(document).ready(function(){
    $('input[.pov_icon_small]').click(function(){
        if($(this).attr("value")=="measure"){
            $(".pov_description").not("#measure").hide();
            $("#measure").show();
        }
        if($(this).attr("value")=="locate"){
            $(".pov_description").not("#locate").hide();
            $("#locate").show();
        }
        if($(this).attr("value")=="inform"){
            $(".pov_description").not("#inform").hide();
            $("#inform").show();
        }
    });

消息链接JS代码似乎不起作用。我在这里做了一个小错误吗?或者我应该以完全不同的方式准备代码?

2 个答案:

答案 0 :(得分:0)

1st:您只需要获取一个值并将其转换为id ..

第二名,如@juvian提到的 $('input [.pov_icon_small]')不是有效的选择器

第三 .pov_icon_small其div不是输入,因此您可以使用$('div.pov_icon_small')代替

第4名 .pov_icon_small没有任何值属性.. .pov_title_small.pov_title_large这些属性具有值属性

$(document).ready(function(){
  $('div.pov_title_small , div.pov_title_large').click(function(){
    var ThisValue = $.trim($(this).attr('value'));
    $(".pov_description").not("#"+ThisValue).hide();
    $("#"+ThisValue).slideToggle()
  });
});

Working Demo

如果您需要从.pov_icon控制它,您有两种方法

1st:在.pov_icon_small / large中放置一个值属性

第二名:您可以使用

$('div.pov_icon_small , div.pov_icon_large').click

var ThisValue = $.trim($(this).next('div[class^="pov_title_"]').attr('value'));

答案 1 :(得分:0)

有两个问题,首先你的CSS选择器input[.pov_icon_small]无效。第二个是您将点击功能附加到pov_icon_small,其中没有足够的高度或宽度供用户点击。我已经调整了HTML,所以这会绑定到pov_title_small类。

您需要将click函数附加到具有值的项目,然后将该值作为选择器传递。对于pov_title_small我已将属性value更改为data-value,然后点击功能使用该选项来选择要显示的ID。这是代码:

HTML:

<div class="container">
<div class="row">
<div class ="col-md-2 pov_icon">
 <div class="pov_icon_small">
  <i class="fa fa-clock-o"></i>
 </div>
 <div class="pov_title_small" data-value="measure">
   MEASURE
 </div>
</div>

<div class ="col-md-2 pov_icon">
 <div class="pov_icon_large">
  <i class="fa fa-map-marker"></i>
 </div>
 <div class="pov_title_large" data-value="locate">
   LOCATE
 </div>
</div>

<div class ="col-md-2 pov_icon">
 <div class="pov_icon_small">
  <i class="fa fa-commenting"></i>
 </div>
 <div class="pov_title_small" data-value="inform">
   INFORM
 </div>
</div>

<div id="measure" style="display:none" class="pov_description">
 <p> Message MESSAGE</p>
</div>
<div id="locate" style="display: none;" class="pov_description">
 <p> Message LOCATE</p>
</div>
<div id="inform" style="display:none" class="pov_description">
 <p> Message INFORM</p>
</div>

使用Javascript:

$(document).ready(function(){
    $('[data-value]').bind('click', function(){
        $('.pov_description').hide();
        $('#'+$(this).attr('data-value')).show();
    });
});

你可以看到它在这个JS小提琴中工作:http://jsfiddle.net/h97fg75s/