これは 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() を割り当てることができますか???
狂ってる...