使用此代码,当您将鼠标悬停在id =“trigger *”的任何内容上时,它会显示id =“panel *”的所有内容,我希望它为trigger1显示panel1,触发器2显示panel2。< / p>
这可能吗?这是我的代码:
$(document).ready(function(){
hovered = false;
$('*[id^=trigger]').bind('mouseenter mouseleave', function(event) {
switch(event.type) {
case 'mouseenter':
// when user enters the div
$('*[id^=panel]').show('fast');
break;
case 'mouseleave':
// leaves
setTimeout(function(){
if(!hovered) {
$('*[id^=panel]').hide('fast');
}}, 250);
break;
}
});
$('*[id^=panel]').mouseover(function(){
hovered = true;
}).mouseout(function(){
hovered = false;
$('*[id^=trigger]').trigger("mouseout");
});
});
答案 0 :(得分:0)
如果我了解您的要求,您希望显示触发器触发器的最近面板。请使用.closest()
。
改变这个:
$('*[id^=panel]').show('fast');
对此:
$(this).closest('*[id^=panel]').show('fast');
答案 1 :(得分:0)
使用正则表达式或javascript 拆分功能将id分成两部分,然后获取id
例如在我的代码中使用
var draggable_id = $(this).attr('id').split('button')[0];
答案 2 :(得分:0)
从触发器对象中提取id并使用该id来查找面板对象。
$('*[id^=trigger]').bind('mouseenter mouseleave', function(event) {
// extract id from trigger object
var id = this.id.substring(7);
switch(event.type) {
case 'mouseenter':
// when user enters the div
$('*[id^=panel'+id+']').show();
break;
case 'mouseleave':
$('*[id^=panel'+id+']').hide();
break;
}
});