【问题标题】:Can't change attribute data-*** with jquery无法使用 jquery 更改属性数据-***
【发布时间】:2017-07-28 13:22:27
【问题描述】:

我不明白为什么没有执行按钮请求。我必须改变移动屏幕的方向,但直到它现在工作。

$( "button.btn-tooltip" ).attr( "data-placement", "left" );
body {
  padding: 10px;
}

button {
  width: 100px;
  height: 30px;  margin: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"></script>
<button type="button" class="btn btn-tooltip" data-toggle="tooltip" data-placement="right" title="Tooltip"></button>

【问题讨论】:

  • 发布的代码有效。关注console.log (document.querySelector(".btn").dataset.placement); 进行验证。还有其他问题。

标签: javascript jquery twitter-bootstrap dom jquery-ui-tooltip


【解决方案1】:

您可能正在查看 默认 工具提示,而不是 Bootstrap 的 工具提示。常规工具栏默认位于右下角,这可能会让您与 rightdata-placement 混淆:

$("button.btn-tooltip").attr("data-placement", "left");
body {
  text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<button type="button" 
        class="btn btn-tooltip"
        data-toggle="tooltip"
        data-placement="right"
        title="Tooltip">
        Text
</button>

要使用 Bootstrap 工具提示,您需要记住将它们初始化为:

$(document).ready(function(){
    $('[data-toggle="tooltip"]').tooltip();   
});

添加此代码表明您的 data-placement 更改确实按预期工作:

$(document).ready(function(){
    $('[data-toggle="tooltip"]').tooltip();   
});

$("button.btn-tooltip").attr("data-placement", "left");
body {
  text-align: center;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>

<button type="button" 
        class="btn btn-tooltip"
        data-toggle="tooltip"
        data-placement="right"
        title="Tooltip">
        Text
</button>

如果您的代码没有给您相同的结果,那么您的 JavaScript 可能在 DOM 完全加载之前运行(这意味着按钮不存在以供操作)。

在这种情况下,请确保您的代码包含在 $(document).ready(function(){}) 中,以强制 JavaScript 等待按钮创建完成。

希望这会有所帮助! :)

【讨论】:

  • 非常感谢!
【解决方案2】:

你可以这样做

$("button.btn-tooltip").data( "placement", "left" );

【讨论】:

    【解决方案3】:

    您编写的代码可以正常工作,如下所示: http://jsbin.com/xozuseyeyi/edit?html,js,output

    我怀疑您的 javascript 代码在您的按钮在 DOM 中可用之前正在运行。

    您是否尝试将代码封装在 document.ready() 处理程序或类似处理程序中?

    $(document).ready(function() {
        $("button.btn-tooltip").data( "placement", "left" );
    });
    

    【讨论】:

      【解决方案4】:

      我认为确实添加了该属性,但是因为您在引导程序初始化之后添加了该属性,所以它不起作用。 你在引导程序中使用工具提示吗?您可以尝试在调用之前设置属性
      $('button.btn-tooltip').tooltip()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多