1

このコードでは、id = "trigger *"で何かにカーソルを合わせると、id = "panel *"ですべてが表示されます。trigger1にpanel1を表示し、trigger2にpanel2を表示します。

それは可能ですか?これは私のコードです:

$(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");
});

});
4

3 に答える 3

0

あなたの要件を理解している場合は、トリガーされたトリガーに最も近いパネルを表示したいと考えています。これに使用.closest()します。

これを変える:

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

これに:

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

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

于 2011-09-02T16:15:40.050 に答える
0

正規表現または JavaScript分割関数を使用して ID を 2 つの部分に分割し、その方法で ID を取得します

たとえば、私が使用するコードのように

var draggable_id = $(this).attr('id').split('button')[0];
于 2011-09-02T16:21:10.510 に答える
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;
  }
});
于 2011-09-02T16:42:14.857 に答える