Bootstrap 工具提示仍然卡住

Jes*_*Sam 1 html javascript css jquery twitter-bootstrap

我正在使用包含添加和关闭按钮的 jquery 动态创建一个 div。我正在使用 Bootstrap 工具提示添加和关闭按钮。我面临的问题是,即使鼠标悬停在其他添加按钮上,第一个添加按钮的工具提示也不会隐藏。第一个添加按钮的工具提示保持原样。(参考屏幕截图)关于如何隐藏它的任何想法。 工具提示不会隐藏

我正在使用 jquery clone 方法来创建动态 div。

$(document).on('click', ".addFilesBtn", function(e) {
 e.preventDefault();
 $(".appendClass:first").clone().appendTo".addFiles");
 $('.closeFilesBtn').show();
 $('.closeFilesBtn:first').hide();
});
Run Code Online (Sandbox Code Playgroud)

同样为了隐藏工具提示,我使用了下面的代码,但第一个工具提示仍然没有被隐藏。

$(document).on('mouseleave','[data-toggle="tooltip"]', function(){
      $(this).tooltip('hide');
});
Run Code Online (Sandbox Code Playgroud)

更新的 HTML 代码

<div class="row addFiles">
    <div class="appendClass" style="margin-bottom: 1.5%;">
        <label style="white-space: nowrap;" class="responsive-enter-details col-sm-3 control-label">Select Files</label>
        <div class="col-sm-8 col-md-9">
            <div class="fileinput fileinput-new" data-provides="fileinput">
                <div class="form-control" data-trigger="fileinput">
                    <i class="glyphicon glyphicon-file fileinput-exists"></i> <span class="fileinput-filename">Click to select file</span> <i class="fa fa-upload pull-right"></i>
                </div>
                <input id="inputfile" type="file" style="display: none;">
            </div>
        </div>
        <button class="btn btn-box-tool addFilesBtn" data-toggle="tooltip" title="Click to add more files">
            <i class="fa fa-plus"></i>
        </button>
        <button class="btn btn-box-tool closeFilesBtn" data-toggle="tooltip" title="Click to remove this block">
            <i class="fa fa-times"></i>
        </button>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

链接到 JS Fiddle: https : //jsfiddle.net/gLkrsbxc/4/

正如您在 JS Fiddle 中看到的,工具提示没有关闭。

pra*_*eet 5

请检查上次更新以获取解决方案

http://getbootstrap.com/javascript/#tooltips上的文档中所述,您需要初始化所有工具提示,例如

$(function () {
  $('[data-toggle="tooltip"]').tooltip()
})
Run Code Online (Sandbox Code Playgroud)

所以,在这里你只需要在将工具提示添加到 DOM 后初始化它们。$('[data-toggle="tooltip"]').tooltip()克隆后只需添加您的点击功能。

$(document).on('click', ".addFilesBtn", function(e) {
 e.preventDefault();
 $(".appendClass:first").clone().appendTo".addFiles");

 //initialize tooltips(add this line)
 $('[data-toggle="tooltip"]').tooltip();

 $('.closeFilesBtn').show();
 $('.closeFilesBtn:first').hide();
});
Run Code Online (Sandbox Code Playgroud)

而且我认为如果正确初始化,您将不需要隐藏功能。

更新:

我认为调用初始化函数不能正常工作,因为在执行dom操作操作时会出现问题。在 append 函数之后和初始化函数之前添加一点延迟,setTimeout如下所示:

$(document).on('click', ".addFilesBtn", function(e) {
 e.preventDefault();
 $(".appendClass:first").clone().appendTo".addFiles");

 //initialize tooltips(give some time for dom changes)
 setTimeout(function() {
    $('[data-toggle="tooltip"]').tooltip();
 }, 50);

 $('.closeFilesBtn').show();
 $('.closeFilesBtn:first').hide();
});
Run Code Online (Sandbox Code Playgroud)

更新 2

只需隐藏您在克隆前单击的按钮的工具提示:

$(document).on('click', ".addFilesBtn", function(e) {
    e.preventDefault();

    //hide the tooltip
    $(this).tooltip('hide');

    $(".appendClass:first").clone().appendTo(".addFiles");
    $('.closeFilesBtn').show();
    $('.closeFilesBtn:first').hide();
});
Run Code Online (Sandbox Code Playgroud)