单击时保持jQuery工具提示打开?

时间:2013-03-27 16:46:58

标签: jquery-ui

我想使用jQuery UI的工具提示功能,但是我需要它,所以当你点击一个元素(在我的情况下是一个图像)时,工具提示会保持打开状态。可以这样做吗?我看不到任何选择。

http://api.jqueryui.com/tooltip/

更新这里是我的代码。我认为第4行应该可行,但遗憾的是:

HTML

<img class="jqToolTip" src="/query.gif" title="Text for tool tip here">

的Javascript

$('.jqToolTip').tooltip({
    disabled: false    
}).click(function(){    
    $(this).tooltip( "open" );
//  alert('click');
}).hover(function(){
    // alert('mouse in');
}, function(){
    // alert('mouse out');
});

2 个答案:

答案 0 :(得分:0)

http://api.jqueryui.com/tooltip/#method-open

$('img.my-class').click(function() {
    $(this).tooltip( "open" );
}

答案 1 :(得分:0)

我试图解决同样的问题,我无法在任何地方找到答案。我终于提出了一个解决方案,经过4个多小时的搜索和实验后才能运行。

我做的是:

  1. 如果点击状态,立即停止传播
  2. 添加了一个跟踪状态的点击处理程序
  3. //This is a naive solution that only handles one tooltip at a time
    //You should really move clicked as a data attribute of the element in question
    var clicked;
    var tooltips = $('a[title]').on('mouseleave focusout mouseover focusin', function(event) {
      if (clicked) {
        event.stopImmediatePropagation();
      }
    }).tooltip().click(function() {
      var $this = $(this);
      var isOpen = $this.data('tooltip');
      var method = isOpen ? 'close' : 'open';
      $this.tooltip(method);
      //verbosity for clarity sake, yes you could just use !isOpen or clicked = (method === 'open')
      if (method === 'open') {
        clicked = true;
      } else {
        clicked = false;
      }
      $this.data('tooltip', !isOpen);
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script>
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/redmond/jquery-ui.css" rel="stylesheet" />
    <a href="#" title="That's what this widget is">Tooltips</a>

    希望这将有助于未来的Google员工。

    部分感谢this post