* [id ^ =选择全部,我想选择每个相同的数字

时间:2011-09-02 16:12:46

标签: jquery hover rollover persist selectall

使用此代码,当您将鼠标悬停在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");
});

});

3 个答案:

答案 0 :(得分:0)

如果我了解您的要求,您希望显示触发器触发器的最近面板。请使用.closest()

改变这个:

$('*[id^=panel]').show('fast');

对此:

$(this).closest('*[id^=panel]').show('fast');

http://api.jquery.com/closest/

答案 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;
  }
});