这是 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()???
这太疯狂了...