这是我的标记:
<table class="col1table" cellspacing="0" cellpadding="0">
<tr>
<td><a class="tips_trigger" href="#"><img src="/img/design/icon_tips_venn.png" /></a></td>
<td><a class="facebook_trigger" href="#"><img src="/img/design/icon_facebook.png" /></a></td>
<td><a class="twitter_trigger" href="#"><img src="/img/design/icon_twitter.png" /></a></td>
<td><a class="myspace_trigger" href="#"><img src="/img/design/icon_myspace.png" /></a></td>
</tr>
<tr>
<td><a class="tips_trigger" href="#">TIPS EN VENN</a></td>
<td><a class="facebook_trigger" href="#">FACEBOOK</a></td>
<td><a class="twitter_trigger" href="#">TWITTER</a></td>
<td><a class="myspace_trigger" href="#">MYSPACE</a></td>
</tr>
</table>
这是加价的工具提示:
<div id="message_tips" class="toolTip">Lorem ipsum dolor sit amet.<br /><br /><br /><br /><br /><br />Lorem ipsum dolor sit amet.</div>
这是我的代码隐藏/为.tips_trigger取消隐藏工具提示(工具提示有ID:“#message_tips”)。 请注意,有上表中的每一行的一个.tips_trigger。 而且会有每个“..._触发级”一个提示。
$('.tips_trigger').toggle(function(event){
event.preventDefault();
$('#message_tips').css('display', 'block');
}, function(event){
$('#message_tips').css('display', 'none');
});
我有两个问题:
1.每个tips_trigger类的似乎工作的脚本independatly。 我的意思是,如果我在第一行中单击tips_trigger,它会显示工具提示。 如果我直后的第二行中单击tips_trigger,它再次显示工具提示。 我必须按完全相同的tips_trigger级istance两次,它遮住。 我怎样才能解决这个问题?
2.每个“..._触发‘ - 班都会有一个工具提示,不只是’.tips_trigger”。 有没有办法来改变我目前的脚本,使其适用于多种取消隐藏/隐藏,而不是写每类中的一个脚本?
亲切的问候,
马吕斯
这不是完全清楚你想要什么,但这里有一个改进的例子,(我认为)修复您的两个问题: http://www.jsfiddle.net/fSrLz/
你不应该使用.toggle()
函数的点击处理程序,你应该使用它的显示/隐藏功能。 适用于所有,你可以做$(".tips_trigger, .facebook_trigger, etc...')
也可以使用像票友选择$("[class$=_trigger")
这意味着选择所有,它的类属性用“_trigger”)结束。
下面是从例子中,我修改了JS:
$('[class$=_trigger]').click(function (event) {
event.preventDefault();
$('#message_tips').toggle();
});
用于处理多个刀头会是这样一个优雅的解决方案:
修改提示触发喜欢的东西:
<li><a href="#tooltip_type2" class="tooltip-trigger">Type 1 triggger</a></li>
<li><a href="#tooltip_type2" class="tooltip-trigger">Type 2 trigger</a></li>
修改你的工具提示是这样的:
<div id="tooltip_type1" class="tooltip_content">Content for type 1</div>
<div id="tooltip_type1" class="tooltip_content">Content for type 2</div>
- 修改JavaScript来:
$(".tooltip_trigger").click(function() {
var target = $(this).attr('href');
var tooltip_state = 0;
if(tooltip_state) { $(".tooltip_content").css("display", "none"); }
$(target).css("display", "block");
tooltip_state = 1; return false; });
这就是我不与任何语法或者说,我很可能使对方失误困扰的本质。 这既解决了你的问题。
我使用的输入来源:查理布朗,木孔德和bcherry做出这样的:
标记触发器:
<td><a class="tooltrigger" href="#tip1"><img src="/img/design/icon_tips_venn.png" /></a></td>
<td><a class="tooltrigger" href="#tip2"><img src="/img/design/icon_facebook.png" /></a></td>
标记提示:
<div id="tip1" class="tooltip">Lorem Ipsum Donor ist.<br /><br /><br /><br /><br /><br />Lorem Ipsum Donor ist.</div>
<div id="tip2" class="tooltip">Facebook Lorem Ipsum Donor ist.<br /><br /><br /><br /><br /><br />Facebook Lorem Ipsum Donor ist.</div>
脚本:
$('.tooltrigger').click(function(event){
event.preventDefault();
$(
'.tooltip' + $(this).attr('href')
).toggle().siblings().hide();
});
该脚本测试,效果很好,但任何进一步的建议表示赞赏。
我有一个类似的问题。 我想叫了slideDown()上的一个div被点击以下两种不同的元素时。
我所做的是使在要素之一了slideDown()函数,当您单击第二个元素则触发第一个元素上的click事件。
是这样的:
$('#gallery_toggle').toggle(function() {
$('#gallery_slide').slideDown();
}, function() {
$('#gallery_slide').slideUp();
});
$('#another_gallery_toggle').click(function(){
$('#gallery_toggle').trigger('click');
});
希望帮助!
$('a.tips_trigger').click(function(event){
event.preventDefault();
if ($('#message_tips').css('display') == 'block'){
$('#message_tips').hide();
}
else {
$('#message_tips').show();
}
});