【问题标题】:toggle jquery-mobile ui button's icon inside backbone view在主干视图中切换 jquery-mobile ui 按钮的图标
【发布时间】:2014-07-11 03:56:03
【问题描述】:

我在使用以下代码更改 jquery-mobile 属性时遇到问题:

 this.$("#" + idOfButton).attr('data-icon', "check")
     .find('.ui-icon')
     .addClass('ui-icon-' + "check")
     .removeClass('ui-icon-' + "grid");

运行此代码时,我会在我的 chrome 调试器中看到所有类和数据角色的更新。我在主干视图中执行此操作。

问题是我从未在实际视图中看到更改发生,并且视图仍然显示旧的网格图标。

【问题讨论】:

    标签: jquery-mobile backbone-views


    【解决方案1】:

    我认为您的选择器有问题。使用$("#" + idOfButton) 选择元素就足够了。所以,要更改图标:

    $("#" + idOfButton).removeClass('ui-icon-grid').addClass('ui-icon-check');
    

    仅供参考:jQuery Mobile 对按钮具有某种“双重性”,可以使用<input><a> 标记来声明。因此,可以通过两种方式更改图标。

    HTML

    <input type="button" data-icon="grid" id="test_input" value="Test with 'input' tag"/>
    <a href="#" data-role="button" data-icon="grid" id="test_a">Test with 'a' tag</a>
    
    <a href="#" data-role="button" data-inline="true" id="change">Change icon</a>
    

    JavaScript

    $(document).on("click", "#change", function()
    {
        $("#test_input").button("option", "icon", "check");
        $("#test_a").removeClass("ui-icon-grid").addClass("ui-icon-check");
    });
    

    JSFiddle


    更新涉及 jQuery Mobile 1.1.2 / 1.2.0

    增强是不同的,这是可行的:

    $("#test_a").find(".ui-icon").removeClass("ui-icon-grid").addClass("ui-icon-check");
    

    但您不能使用$(document).on() 附加事件。改为使用:

    $("#change").live("click", function()
    {
        $("#test_a").find(".ui-icon").removeClass("ui-icon-grid").addClass("ui-icon-check");
    });
    

    【讨论】:

    • 另外,我不得不提一下,我们使用的是 jquery-mobile 1.1.2
    • 版本 1.1.2 已经过时(2013 年 3 月 25 日)。更新选项?与此同时,我看到了我能做些什么
    • Sga 你不用担心这个事件,因为我使用了主干的事件。所以,只要它注册一个水龙头,它就会正确地触发我的功能。我会尝试你的建议。
    • 好的,我尝试了你的建议。好吧,至少这一次它改变了图标,但不仅仅是显示检查,它显示了网格以及设置图标,就像我之前发送的第一张图片一样。我想知道这些都是从哪里来的?这看起来很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多