jquery mobile删除类不能处理click事件

时间:2013-03-14 15:03:47

标签: jquery mobile

我在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');

1 个答案:

答案 0 :(得分:2)

很可能你没有在正确的时间绑定事件,或者它的目标是错误的元素(例如重复的id,这很容易在jQM中无意中得到)

例如,如果您当前的页面有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');
    });

});
相关问题