6

这是我的代码:

function togglePOIAndDisplay(toggle){
    var display = $(toggle).attr('data-icon');
    console.log(display);
    if(display == 'minus'){
        $(toggle).attr('data-icon', 'check');
            console.log(display);
    } else {
        $(toggle).attr('data-icon', 'minus');
        removeMarkers(toggle);
    }
}   

它将登录minus到控制台并进入第一个 if() 块并正确执行 displayAllPOIOfType(),但它不会反映值的变化,尽管它被正确设置。任何想法为什么会这样,因为它显然正确读取/设置了属性。

function我需要打电话更新吗?谢谢

4

4 回答 4

16

这取决于它是按钮、选择还是其他接受该data-icon属性的东西。不幸的是,jQuery Mobile 对动态更改由属性控制的事物没有很好的支持data-*,因此您必须调整属性以及修改子元素上的类。

对于按钮,这样的事情应该可以工作:

$(buttonSelector).attr('data-icon', newIcon);
                 .find('.ui-icon')
                     .addClass('ui-icon-' + newIcon)
                     .removeClass('ui-icon-' + oldIcon);
于 2012-09-27T19:15:43.057 回答
8

如果图标在这样的按钮内:

<a id="buttonID" href="#" data-role="button" data-icon="delete">Button</a>

您可以使用 buttonMarkup 功能更改图标:

$('#buttonID').buttonMarkup({ icon: "check" });

或者到您的自定义图标:

$('#buttonID').buttonMarkup({ icon: "my-icon" });

示例:http: //jsfiddle.net/u8fnJ/1/

如这篇文章中所示如何使用 jQueryMobile 刷新标题中的按钮?

于 2015-01-01T00:47:20.717 回答
0

http://jsfiddle.net/phillpafford/8pwFK/29/

将自定义图标更改为星形图标。

$(this).attr('data-icon','star');
$(this).find('.ui-icon').removeClass('ui-icon-custom').addClass('ui-icon-star');

这个例子很容易学习。

于 2013-11-01T09:40:19.163 回答
-1

对于列表视图,您需要插入一个跨度。

$("#times").off('click','li').on("click","li",function() {

 /* add a checkbox when you click the listview li  */
 $(this).find('div.ui-li').append('<span class="ui-icon ui-icon-check ui-icon-shadow">&nbsp;</span>');

});
于 2013-09-27T01:45:43.557 回答