這是我的對話框代碼:jQuery的對話框:在主窗體上執行.hide()不工作
"Save": function() {
$.validator.unobtrusive.parse("#EventManage");
if ($("#EventManage").valid()) {
$.ajax({
url: "/Home/EventSave",
type: 'POST',
data: $("#EventManage").serialize(),
success: function (result) {
//alert("s");
$("#EventManage").html(result);
$.validator.unobtrusive.parse("#EventManage");
LoadEventList();
alert('x');
$('td.hide').hide(); <<<<<
alert('x');
$('#eventlistww').each(function() {
var $table = $(this);
$('tr', $table).each(function() {
var $row = $(this);
$('td', $row).each(function() {
$('td.hide').hide();
});
});
});
}
});
}
},
我試圖獲得$(「td.hide」) 。隱藏(); < < < < <在主頁面上工作。不知道爲什麼它不起作用,但它似乎工作時,我設置第二個警報('x');之後它被執行。沒有這個警報,它不起作用。
出了什麼問題?
編輯
@ChrisFrancis奇怪不,我註釋掉的第二部分,並再次執行該警報的法寶。有用。沒有警報,它不起作用。
EDIT2
要添加的LoadEventList()看起來是這樣的:
function LoadEventList() {
$("#eventlistww").load("/Home/EventDataList");
}
似乎得到我的回答:
我似乎已經得到了它的工作改爲改變LoadEventList()。
function LoadEventList() {
$.get('/Home/EventDataList', function (result) {
$('#eventlistww').html(result);
$('td.hide').hide();
});
}
奇怪,但爲什麼這個工程,但.load方法doesnt。
這聽起來好像第一個'$(」 td.hide')。hide()'語句不會工作 - 它只是在第二次提醒後才起作用,因爲你接着再次調用'$('td.hide')。hide()'。 – 2011-12-19 13:37:25
@ChrisFrancis奇怪的是,我評論第二部分,並且再次提醒魔法。有用。沒有警報,它不起作用。 – RicL 2011-12-19 13:50:00
我認爲它必須是一種競爭條件 - 那麼您在第二次提醒時點擊「確定」的時間可能會讓DOM完全呈現,而如果沒有它,您可能還沒有頁面上的元素。正如Dominic在下面指出的那樣,確保在執行任何DOM操作之前使用文檔就緒事件。 – 2011-12-19 14:12:23