0

jqmページの要素のグリッドタイプとリストタイプのレイアウトを切り替えるjquery関数を作成しようとしています。これが私のhtml構造です:

<div data-role="page" id="portfolio">
<div data-role="header">
    <a href="#main" data-role="button" data-icon="arrow-l" data-iconpos="notext" data-theme="b" data-inline="true"></a>
    <h1>Projects</h1>
    <a href="javascript:changeLayout()" id="changelayout" class="ui-btn-right" data-role="button" data-icon="grid" data-iconpos="notext" data-theme="b" data-inline="true"></a>
</div>
<div data-role="content">
    <ul id="projects">
        <li><a href="#incarpi"><img src="images/incarpi.jpg" ><div class="portfoliotext">Raspberry Pi In-car computer</div></a></li>

...

私の機能は次のとおりです。

function changeLayout() {
if ($('#changelayout').attr('data-icon') == 'grid'){
    $('#changelayout').attr('data-icon', 'bars');
    $('#changelayout .ui-icon').addClass('ui-icon-bars').removeClass('ui-icon-grid');
    $('#changelayout').buttonMarkup('refresh');
    $('#projects li img').width('100%');
    $('#projects li').display('none');
    $('.portfoliotext').show();
}
else {
    $('#changelayout').attr('data-icon', 'grid');
    $('#changelayout .ui-icon').addClass('ui-icon-grid').removeClass('ui-icon-bars');
    $('#changelayout').buttonMarkup('refresh');
    $('#projects li img').width('20%');
    $('#projects li').margin('0');
    $('#projects li').display('inline-block');
    $('.portfoliotext').hide();
}

}

ただし、要素はまだ重なり合っています。私は何を間違っていますか?

ありがとう

4

2 に答える 2

1

作業例: http://jsfiddle.net/Gajotres/PMrDn/

$(document).on('pagebeforeshow', '#index', function(){ 
    $(document).on('click', '#changelayout', function(){             
        if ($('#changelayout').attr('data-icon') == 'grid'){
            $('#changelayout').buttonMarkup({ icon: "bars" });
            $( "#projects li" ).each(function( index ) {
                $(this).width('100%');
                $(this).css('float','clear');            
                $(this).find('.portfoliotext').css('display','none');
            });            
        } else {
            $('#changelayout').buttonMarkup({ icon: "grid" });            
            $( "#projects li" ).each(function( index ) {            
                $(this).width('20%');
                $(this).css({'float':'left','margin':'0'});                        
                $(this).find('.portfoliotext').css('display','block');                   
            });                         
        }
    });        
});

これでいいと思います。

于 2013-04-12T12:08:28.007 に答える
0

これを試しましたか?

$("#changelayout").attr('data-icon','bars').button().trigger("refresh");                             

または、このようにすることもできます。

$("#changelayout").find(".ui-icon").removeClass("ui-icon-bars").addClass("ui-icon-grid");
于 2013-04-12T12:05:41.987 に答える