【问题标题】:Toggle tooltip text切换工具提示文本
【发布时间】:2013-01-07 02:26:11
【问题描述】:

基本上我的问题是我的工具提示不会在切换时更改文本。我有一个具有展开/折叠功能的页面。通常,当您将鼠标悬停在向上箭头上时,标题标签会显示折叠面板。当您单击箭头按钮以折叠 div 面板时,img 会发生变化(现在箭头将指向下方,并且标题标签应更改为展开面板)。这有效,并且标题在没有工具提示的情况下更改。添加工具提示时,文本不会更改。我相信你必须在点击时销毁并创建一个新的工具提示,但我不知道该怎么做。他是我的代码,在此先感谢。

$("img.toggle1").click(function(){
  if (document.getElementById("panel1").style.display != "none") { // is the div hidden?
    $("img.toggle1").attr("src", "images/expander-down.png");
    $("img.toggle1").attr("title", "Expand this section");
     }
  else{ // is the div showing?
    $("img.toggle1").attr("src", "images/expander-up.png");
    $("img.toggle1").attr("title", "Collapse this section");
    $('div#header1').addClass('headerBarFirstOff');
  }
    $("div.panel1").slideToggle("slow");

  });

所以使用销毁/创建方法进行更新。我可以让工具提示在第一次点击时更改为展开,但它保持为“展开”。我用这个:

$("img.toggle1").click(function(){
  if (document.getElementById("panel2").style.display != "none") {
    $("img.toggle1").attr("src", "images/expander-down.png");
    $(document).tooltip("destroy"); //here's the change, the tooltip toggles once
    $(document).tooltip(); //here's the change, the tooltip toggles once
    $("img.toggle1").attr("title", "Expand this section");
     }
  else{
    $("img.toggle1").attr("src", "images/expander-up.png");
    //$(document).tooltip("destroy"); //doesn't work here
    //$(document).tooltip(); //doesn't work here
    $("img.toggle1").attr("title", "Collapse this section");
  }

另外,我有复选框(隐藏/显示特定面板)和打开或关闭所有按钮:

$(document).ready(function(){
$("input.togglePanel1").click(function(){
  if($(".togglePanel1").length == $(".togglePanel1:checked").length) { 
    $("div.panel1").slideDown("slow");
    } else {  
    $("div.panel1").slideUp("slow");
    }
  });
$("input.togglePanel2").click(function(){
  if($(".togglePanel2").length == $(".togglePanel2:checked").length) { 
    $("div.panel2").slideDown("slow");
    } else {  
    $("div.panel2").slideUp("slow");
    }
  });
$("input.togglePanel3").click(function(){
  if($(".togglePanel3").length == $(".togglePanel3:checked").length) { 
    $("div.panel3").slideDown("slow");
    } else {  
    $("div.panel3").slideUp("slow");
    }
  });

$("img#closeAll").click(function(){
    $("div.panel1").slideUp("slow");
    $("div.panel2").slideUp("slow");
    $("div.panel3").slideUp("slow");
    $("div.panel4").slideUp("slow");
    $("div.panel5").slideUp("slow");
  });
$("img#openAll").click(function(){
    $("div.panel1").slideDown("slow");
    $("div.panel2").slideDown("slow");
    $("div.panel3").slideDown("slow");
    $("div.panel4").slideDown("slow");
    $("div.panel5").slideDown("slow");
  });

【问题讨论】:

    标签: javascript jquery dynamic tooltip toggle


    【解决方案1】:

    您可以使用uiTooltipTitle 数据属性手动设置工具提示文本

    $("img.toggle1").click(function(){
      var ishidden = $('#panel1').is(':hidden');
      var src = ishidden ? "images/expander-down.png" : "images/expander-up.png"
      var title = ishidden ? "Expand this section" : "Collapse this section";
      $("img.toggle1")
               .attr("src", src);
      $("img.toggle1")
               .attr("title", title)
               .data('uiTooltipTitle', title);      
      $("div.panel1").slideToggle("slow");
    
      });
    

    http://jsfiddle.net/SHBWW/

    使用 if/else

    $("img.toggle1").click(function(){
        if($('#panel1').is(':hidden')){
            $("img.toggle1").attr("src", "images/expander-down.png");
            $("img.toggle1")
               .attr("title", "Expand this section")
               .data('uiTooltipTitle', "Expand this section");  
        }else{
            $("img.toggle1").attr("src", "images/expander-up.png");
            $("img.toggle1")
               .attr("title", "Collapse this section")
               .data('uiTooltipTitle', "Collapse this section");  
        }       
        $("div.panel1").slideToggle("slow");    
      });
    

    【讨论】:

    • 工具提示正在切换,但似乎是单击一下。第一次单击不会更改文本或按钮。其余的都可以。
    • Mines 和 if else 是一样的.. 但我会用 if else 做一个
    • 知道了!感叹号 var ishidden =! $('#panel1').is(':hidden');需要添加。谢谢有线!
    • 啊好吧..你想要相反的..你可以做!或使用.is(':visible')
    • 天才!我还有关闭所有面板的按钮和隐藏面板的复选框。如何在这里实现 img 和 title 更改?问题已更新。
    【解决方案2】:
    $("img.toggle1").click(function(){
      if ($("#panel1").is(":visible")) { 
        //do something
        $("img.toggle1").removeAttr('title');
        $("img.toggle1").attr("title", "Expand this section");
      }
      else{
        //do something
        $("img.toggle1").removeAttr('title');
        $("img.toggle1").attr("title", "Collapse this section");
      }
    });
    

    【讨论】:

    • 那行不通。我的切换工作非常好,只是 jquery 工具提示不会更新。 $("img.toggle1").attr("title", "展开本节");就像我上面使用的那样,不会更新 jquery 工具提示,只是普通的 html 标题标签。我需要一种方法来销毁旧的 jquery 工具提示并使用切换文本创建一个新的。
    • @triplethreat77:工具提示是默认浏览器工具提示吗?或者它是一个在初始化(页面加载)时使用title 属性的插件。您可以尝试使用.removeAttr('title')
    • 是jquery使用了title属性,加上了花哨的css。就像我上面所说的,默认浏览器切换得很好。如果我将 .removeAttr('title') 放在代码中,我的 jquery 工具提示将根本不会显示。
    • @triplethreat77:是的,花哨的 CSS 每次都需要撤消和重做。您可能可以检查插件文档本身。它很可能会在onoff 状态之间切换。
    • 我正在取得进展并更新了我的问题。但仍然不完美。
    猜你喜欢
    • 2014-06-10
    • 2015-09-16
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2012-07-17
    • 1970-01-01
    相关资源
    最近更新 更多