0

これは ajax では非常に奇妙な状況です。次のように、ajax経由でメインページを呼び出すログインページがあります。

 // Function to call WCF  Service - Infrastructure       
    function CallService() {
        $.ajax({
            type: Type, //GET or POST or PUT or DELETE verb
            url: Url, // Location of the service
            data: Data, //Data sent to server
            contentType: ContentType, // content type sent to server
            dataType: DataType, //Expected data format from server
            processdata: ProcessData, //True or False
            success: function (msg) {//On Successfull service call
                ServiceSucceeded(msg);
            },
            error: ServiceFailed// When Service call fails
        });
    }

    function ServiceSucceeded(result) {

        if (DataType == "json") {
            var resultText = result;
            if (resultText.result == "True") {
                $.mobile.changePage("MainMenu.aspx",{ transition: "slideup" });
            }
            else {
                //Show Error Message
            }
        }
    }

すべてのページで、次のコードを含む「general.js」という js への参照があります。

function processMenu(menuOptions) {
var options = menuOptions.split('');
var currentOptions = '1234567'.split('')

for (i = 0; i < currentOptions.length; i++) {
    var index = (i + 1) + '';
    if (options.indexOf(index) < 0) {
        var op = $('#op' + currentOptions[i]);
        op.attr('disabled', true);
        op.addClass('btndisabled');
        $(op).live("click", function (event) {
            //do stuff
            event.preventDefault(); // Prevent default link behaviour
        });
    }
}

}

このコードは、いくつかの番号付きコントロールを検証し、必要に応じて「btndisabled」と呼ばれる CSS を有効にします。

「btndisabled」CSS は次のとおりです。

.btndisabled{    
    background-color: rgb(236,233,216);
    color: #CCC;
    font-style: normal;
}

わかりました状況は、私が使用するときです

$.mobile.changePage("MainMenu.aspx?",{ transition: "slideup" });

Login.aspx コンテンツが MainMenu.aspx コンテンツと js に変更されます。

op.attr('disabled', true);
op.addClass('btndisabled');
$(op).live("click", function (event) {
    //do stuff
    event.preventDefault(); // Prevent default link behaviour
});

が実行されると、CSS は適用されませんが、「event.preventDefault」が実行されます。CSSを適用する必要がありますが、何が悪いのかわかりません。何か案は?

アップデート

ポストバックと ajax 呼び出しでのオブジェクトの動作を見て、非常に興味深いことに気付きましたが、それについてどう考えればよいかわかりません。

ポストバック時

ここに画像の説明を入力

HTMLAnchorElement を見てください

アヤックス

ここに画像の説明を入力

DOM がアンカー オブジェクトをロードしていない場合、どのように event.preventDefault() を割り当てることができますか???

狂ってる...

4

1 に答える 1

0

あなたの答えは、おそらく jQuery Mobile フォーラム自体にあります。

http://forum.jquery.com/topic/mobile-css-gets-lost-after-using-ajax-to-update-content

于 2013-04-04T16:29:04.937 に答える