由于我对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代码似乎不起作用。我在这里做了一个小错误吗?或者我应该以完全不同的方式准备代码?
答案 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()
});
});
如果您需要从.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/