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 回答