JQuery UI工具提示:每个工具提示都有不同的图像

时间:2016-01-06 19:53:43

标签: javascript jquery html jquery-ui tooltip

我对JavaScript很陌生,所以如果这是一个愚蠢的问题,请原谅。

我正在尝试为每个工具提示显示不同的图像。 JQuery UI设置它,因此里面的文本是图像的名称。

查看下面的代码:

HTML:

<div id="tooltip" class="option-child"><a id="ceramic-pro-rain" title="The Title" data-geo="Rochester" href="#" >• 1 layer of Rain on all windows and glass</a></div>

的JavaScript

 <script type="text/javascript">
   $(function() {
      $( document ).tooltip({
        //items: "a, [data-geo], [title]",
        items: "a",
        position: {
          my: "left center-29",
          at: "right+10 center+18"
        },
        content: function() {

                var element = $( this );

                if ( element.is( "[data-geo]" ) ) {
                  var text = element.text();
                  return "<img class='map' alt='" + text +
                    "' src='http://www.sample.com/img/tooltip/" +
                    text + ".jpg" + "'>";
                }

                if ( element.is( "[title]" ) ) {
                  return element.attr( "title" );
                }

                if ( element.is( "img" ) ) {
                  return element.attr( "alt" );
                }
          }
      });
    });

1 个答案:

答案 0 :(得分:0)

由于您的工具提示选择器为items: "a",因此以下语句将永远不会执行。

if ( element.is( "img" ) ) {
    return element.attr( "alt" );
}

<强>解决方案:

如果您想向所有a&amp;添加工具提示img标记包含或不包含[data-geo],请尝试使用js。

$(document).tooltip({
    items: "a,img",
    position: {
        my: "left center-29",
        at: "right+10 center+18"
    },
    content: function() {
        var element = $( this );
        if(element.is( "[data-geo]" )){
            return '<img class="map" alt="'+ $(this).data('geo') +'"  src="http://lorempixel.com/image_output/'+ $(this).data('geo') +'.jpg" />';
        }

        if ( element.is( "[title]" ) ) {
            return element.attr( "title" );
        }

        if ( element.is( "img" ) ) {
            return element.attr( "alt" );
        }
    }
});

我还添加了html来涵盖所有可能的变体。

<div id="tooltip" class="option-child">
    <a id="ceramic-pro-rain" title="The Title" data-geo="Rochester" href="#" >• 1 layer of Rain on all windows and glass</a>
    <img src="http://lorempixel.com/400/200/sports/" alt="sports image">
</div>
<a id="ceramic-pro-rain" title="The Title" href="#" >• Link without data-geo</a>

jsfiddle link