Kendo ui 将内容字段设置为div元素时。。在连接和可见性方面有问题

Kendo ui 将内容字段设置为div元素时。。在连接和可见性方面有问题,kendo-ui,kendo-tooltip,Kendo Ui,Kendo Tooltip,问题:我正在为剑道工具提示的内容属性指定一个div。。。问题是,当我附加工具提示时。。。div就在那里,直到我将鼠标悬停在我附加到的元素上,工具提示才真正连接起来。。。你可以在我下面的代码中看到这是如何不起作用的。。。粘贴到剑道道场,然后看。。。。只需单击按钮(不要将鼠标悬停在文本框上)。。然后你会看到div出现,当你将鼠标悬停在文本框上时,它会做它应该做的事情。。。我做了一个变通办法,被注释掉了。。。但它闪烁了一秒钟。。。有没有一种方法可以让工具提示连接起来并隐藏content div <

问题:我正在为剑道工具提示的内容属性指定一个div。。。问题是,当我附加工具提示时。。。div就在那里,直到我将鼠标悬停在我附加到的元素上,工具提示才真正连接起来。。。你可以在我下面的代码中看到这是如何不起作用的。。。粘贴到剑道道场,然后看。。。。只需单击按钮(不要将鼠标悬停在文本框上)。。然后你会看到div出现,当你将鼠标悬停在文本框上时,它会做它应该做的事情。。。我做了一个变通办法,被注释掉了。。。但它闪烁了一秒钟。。。有没有一种方法可以让工具提示连接起来并隐藏content div

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.1.223/styles/kendo.common.min.css">
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.1.223/styles/kendo.rtl.min.css">
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.1.223/styles/kendo.default.min.css">
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2017.1.223/styles/kendo.mobile.all.min.css">
    <script src="http://code.jquery.com/jquery-1.12.3.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2017.1.223/js/angular.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2017.1.223/js/jszip.min.js"></script>
    <script src="http://kendo.cdn.telerik.com/2017.1.223/js/kendo.all.min.js"></script>
  </head>
  <body>
    <div id="view" data-bind="enabled: isNameEnabled">
      <button id="button1" data-bind="click: updateTooltip">Change Tooltip</button>
      <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
      <input id="text1" type="text" data-bind="value: name" />
      <div id="toolTipDiv"></div>
    </div>
    <script>
      var viewModel = kendo.observable({
        isNameEnabled: false,
        name: "John Doe",
        updateTooltip: function () {
          var kendoToolTip = window.toolTipEl.data("kendoTooltip");
          // comment this out to see
          //div1.hide();
          //kendoToolTip.show();
          //kendoToolTip.hide();
          //div1.show();
          //end comment
          div1.text(text1.value);
        }
      });
      var div1 = $("#toolTipDiv");

      window.toolTipEl = $("#text1");
      kendo.bind($("#view"), viewModel);
      window.toolTipEl.kendoTooltip({
        content: div1, position: "top",autohide:true
      });

    </script></body>
</html>

更改工具提示














var viewModel=kendo.observable({ isNameEnabled:false, 姓名:“约翰·多伊”, UPDATETOLTIP:函数(){ var kendoToolTip=window.toolTipEl.data(“kendoToolTip”); //请对此进行评论以查看 //div1.hide(); //kendoToolTip.show(); //kendoToolTip.hide(); //div1.show(); //结束语 div1.text(text1.value); } }); var div1=$(“#工具提示div”); window.toolTipEl=$(“#text1”); bind($(“#视图”),viewModel); window.toolTipEl.kendoTooltip({ 内容:div1,位置:“top”,自动隐藏:true });
显示div是因为它是可见的,而您只是将其内容设置为非空。一旦工具提示显示一次,剑道将接管控制权,并将其包装在另一个div中,根据需要隐藏和显示。 请注意,“aria hidden:true”实际上并没有隐藏div…它只是一个屏幕阅读器的指令…您仍然必须实际使用真正的CSS来隐藏div

您需要确保div最初是隐藏的(在剑道包裹它之前),并移除显示:none;一旦你把它交给剑道

或者…隐藏div并将内容设置为只返回div内容而不绑定到div本身的函数,即

<div id="toolTipDiv" aria-hidden="true" style="display: none"></div>
...
updateTooltip: function () {
      div1.text(text1.value);
}
...
window.toolTipEl.kendoTooltip({
    content: function(e) {
      return div1.text();
    },

...
UPDATETOLTIP:函数(){
div1.text(text1.value);
}
...
window.toolTipEl.kendoTooltip({
内容:职能(e){
返回div1.text();
},
例如:

更新 事实证明,只在第一次显示元素的提示时调用内容,而不是每次显示工具提示时调用内容,因此对内容(甚至输入的标题属性)的动态更改不会更改工具提示

所以,忽略我的答案,试试这个:

那“aria hidden:true”是一些测试,我已经删除了它…我使用了刷新,没关系..把文本放在剑道中,然后试试:)在提出建议之前,确保你的建议有效,我找不到解决方法。你的意思是像这个工作示例一样:?我的原始建议解决了你问题中所述的问题。我的更新(如果你正确使用它,它会起作用)只是为了实现真正的动态工具提示,而不是问题中指定的一次性更改。