1

我在 jQuery mobile 中有一个按钮:

 <a href="#" data-role="button" id="show_edit" data-theme="d" data-corners="true" data-shadow="true" data-iconshadow="true" data-wrapperels="span" class="ui-btn ui-corner-left ui-btn-up-a ui-btn-up-d"><span class="ui-btn-inner ui-corner-left"><span class="ui-btn-text">Edit</span></span></a>

如果我在控制台中执行此操作,它可以工作(按钮颜色更改):

$('#show_edit').removeClass('ui-btn-up-d').addClass('ui-btn-up-a');

但是,如果我确实包含在页面上的点击处理程序中,那么“ui-btn-up-d”类不会被删除吗?

$('#show_edit').on('click', function() {
                    $(this).removeClass('ui-btn-up-d').addClass('ui-btn-up-a'); 
                });

编辑:我认为下面的答案是正确的,但是这是另一种方式,它也在改变数据主题:

$('#show_edit').attr('data-theme', 'a').attr('class', 'ui-btn ui-corner-left ui-btn-up-a');
4

1 回答 1

2

很可能您没有在正确的时间绑定事件,或者它针对错误的元素(例如在 jQM 中很容易无意中获得的重复 id)

例如,如果您的当前页面有一个id="home",您可以像这样绑定它:

// every time the id="home" page is initialized, run this handler
$(document).on('pageinit','#home',function(){

    // ensure it targets only elements within this page, however it would
    // be better if you didn't use ID's in jQuery Mobile due to the way it 
    // handles pages.
    $('#show_edit',this).click(function() {
        //$(this).removeClass('ui-btn-up-d').addClass('ui-btn-up-a');
        $(this).toggleClass('ui-btn-up-d ui-btn-up-a');
    });

});
于 2013-03-14T15:11:29.307 回答