2012-02-22 19 views
2

jqueryの新機能で、バグが発生しています。私のページのボタンの上にマウスを置くと、小さなツールチップが表示されます。マウスを動かすと消えます。しかし、私がボタンをクリックすると、ツールチップが詰まってしまい、なぜその理由がわからないのですか?私はページをリロードするまでそこにとどまります。クリックしてもツールチップのオーバーレイが消えない

_controls.html.erb

<%= link_to 'Abandoned', priority, :class => 'abandoned', :'data-status' => 'abandoned', 
          :title => 'Mark as ABANDONED', :rel => 'tipsy' %> 
    <%= link_to 'New', priority, :class => 'new', :'data-status' => 'new', 
          :title => 'Mark as NEW', :rel => 'tipsy' %> 
    <%= link_to 'Started', priority, :class => 'started', :'data-status' => 'started', 
          :title => 'Mark as STARTED', :rel => 'tipsy' %> 
    <%= link_to 'Completed', priority, :class => 'completed', :'data-status' => 'completed', 
          :title => 'Mark as COMPLETED', :rel => 'tipsy' %> 
</div> 
優先のjqueryのjsファイルの

一部

... 
jQuery.fn.priority = function() 
{ 
    var priority = this; 

    priority.bind('click', function(event) { 
     event.stopPropagation(); 
     priority.selectPriority(); 
    }); 

    priority.bind('unselected', function() { 
     priority.find('a.more').tipsy('hide'); 
    }); 

... 

jQuery.fn.selectPriority = function() 
{ 
    $('.priority.selected').not(this).unselectPriority(); 
    this.addClass('selected'); 
}; 

jQuery.fn.unselectPriority = function() 
{ 
    this.triggerHandler('unselected'); 
    this.removeClass('selected'); 
}; 

ボタンをクリックします後にツールチップオーバーレイが消えていない理由を任意のアイデア:ここでは、コードのですか?

PS私はこのコードを書いていませんでした。私はそれをデバッグしようとしています。ツールチップがどこにあるのかわからない場合は教えてください。

更新:ツールヒントが時々止まることがあります。私はevent.stopPropagation()を削除しました。それはまだ起こった。

答えて

0

あなたが提供したコードのスニペットからは分かりませんが、event.stopPropagation()をコメントアウトしてみてください。それが何であるかを見てください。

+0

デバッグを簡単にするために用意できるものは何ですか?また、コード内のどこでツールチップがトリガされるのかを知ることさえできません...私は何か不足していますか?私はどこにでも見ました –

2

あなたはバインドを取り除いて、このようなイベントの中でちょっとした隠れを直接呼び出すことができます:$('#element').tipsy('hide')これはデバッグに役立ちます。私は私のもののいくつかで同じ問題を抱えていました。ほろ酔いページの「ツールチップを発動手動で」チェックアウト:http://onehackoranother.com/projects/jquery/tipsy/

別のオプションは、このように、要素にdelayOut機能を使用することです:

$('.mg-unrd').tipsy({gravity:'s', delayIn: 10, delayOut: 5}); 

delayOutは私のために隠すよりも優れた仕事を、どの時にはまだ私に幽霊を与えました。

実際には、私はこれを適切に解決したこのコードを見つけました... 170行目のTipsy.jsファイルで、私はイベントにマウスを追加しました。

//eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur'; 
eventOut = options.trigger == 'hover' ? 'mousedown mouseleave' : 'blur'; 
関連する問題