javascript - jQuery UI Buttonset 不向子元素添加类

标签 javascript jquery html angularjs jquery-ui

我在使用 jQuery UI 的按钮集功能时遇到了(间歇性的)问题。有时当我调用它时,它只应用它添加到容器 div 和第一个子元素的类,而其他时候它完全按预期工作。 (抱歉,我无法解决这个问题,我无法让它在我的应用程序之外发生。)jQuery UI 1.10.0 和 1.10.4 都存在同样的问题。

即我从这个开始:

<div class="my-buttonset">
    <input type="radio" name="option" id="option1">
    <label for="option1">Option 1</label>

    <input type="radio" name="option" id="option2">
    <label for="option2">Option 2</label>

    <!-- More elements -->
</div>

并在调用 buttonset 后得到这个(注意单选按钮确实添加了一个不正确的类):

<div class="my-buttonset ui-buttonset">
    <input class="ui-corner-left" type="radio" name="option" id="option1">
    <label for="option1">Option 1</label>

    <input type="radio" name="option" id="option2">
    <label for="option2">Option 2</label>

    <!-- Other elements unchanged -->
</div>

而不是这个:

<div class="container-fluid-full radio-row mode-radio-row ui-buttonset">
    <input class="ui-helper-hidden-accessible" type="radio" name="option" id="option1">
    <label class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-hover" for="option1" role="button" aria-disabled="false" aria-pressed="false"><span class="ui-button-text">Option 1</span></label>

    <input class="ui-helper-hidden-accessible" type="radio" name="option" id="option2">
    <label class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left ui-state-hover" for="option2" role="button" aria-disabled="false" aria-pressed="false"><span class="ui-button-text">Option 2</span></label>

    <!-- Other elements correct -->
</div>

更新:我可以在我的应用程序中一致地重现这一点。该应用程序使用 AngularJS,我有 2 个使用按钮集的 View ,称它们为“A”和“B”。如果我转到“A”,刷新页面,然后导航到“B”,它总是会发生。它永远不会以相反的顺序发生,或者如果我从应用程序中的任何其他 View 开始。以前,如果我重新创建它然后导航回“A”就不会发生这种情况,但现在我将它重构为一个指令,如果我在“A”刷新,我会看到正确的按钮集,转到“B”,我看到乱七八糟的版本,然后导航到“A”,我在那里也看到了乱七八糟的版本,它还会影响设置在“A”上的第二个按钮,这不是指令的一部分。

我尝试在 JS Fiddle 中重新创建一个基本示例,其中包含两个使用按钮集的 View ,但这不足以重新创建错误。

最佳答案

对您来说最好的选择是从您的 jQuery UI 按钮集组件中创建一个指令。您的组件很可能在其 UI 元素可见时加载良好,而在不可见时加载失败。

另一种选择是在加载新 View 后立即调用 jQuery init 函数,这样可以确保在尝试初始化按钮集时它是可见的。

关于javascript - jQuery UI Buttonset 不向子元素添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824472/

相关文章:

javascript - 为什么指令中的 element.addClass 无法正常工作?

javascript - 使用 tabsactivate 检测选项卡 - jQuery UI

html - 在表格行中并排获取按钮的问题

html - 如何修复我的表格,以便在调整窗口大小时不会扩展列?

html - 输入类型文本的填充不显示占位符和使用 bootstrap 4 在 IE 11 中键入的文本

php - 调试通用 JS 函数 AJAX 调用后发生的 PHP 错误

javascript - 根据 anchor 目标在文档中的顺序对列表元素进行排序

javascript - d3js/Angular 8 应用程序问题

javascript - AngularUI map 绑定(bind)事件

jQuery 和跨域 POST 请求