我正在为两个不同的事件绑定不同的加载消息。
这是我用来在 AJAX 调用之前绑定行为的函数。我在每次匹配的 Ajax 提交之前调用每个函数,以便为每个函数显示正确的加载消息:
function BindPersonalityLoader()
{
// Bind the loader to personality
$('document').bind("ajaxStart", function() {
// Show the loader
$('img#personality_loader').show();
});
// Bind the loader to personality
$('document').bind("ajaxStop", function() {
// Show the loader
$('img#personality_loader').hide();
});
}
function BindLoadEditPersonalityLoader()
{
// Bind the loader for editing a personality
$('document').bind("ajaxStart", function() {
// Hide the edit form
$('div#quiz_maker_add_personality_wrapper').hide();
// Show the loader
$('div#quiz_maker_edit_personality_loader').show();
});
// Bind the loader for editing a personality
$('document').bind("ajaxStop", function() {
// Hide the loader
$('div#quiz_maker_edit_personality_loader').hide();
});
}
一旦我调用BindLoadEditPersonalityLoader()
,由于某种原因,这将成为永久性的,即使我随后BindPersonalityLoader()
在我的代码中调用,我也期待其他行为。
出于某种原因,我调用代码,它并没有覆盖“绑定”。
例如,如果我运行以下代码,则 的行为BindLoadEditPersonalityLoader()
始终存在,因为它首先被调用:
// Bind the loaders once
BindLoadEditPersonalityLoader();
// Bind the loaders to different behaviour
BindPersonalityLoader();
我已经包含了这两条alert()
消息,以便我可以看到它们何时被调用。
我试过打电话unbind("ajaxStart ajaxStop");
,但这也没有用。
这就是我在两个不同事件中调用绑定的方式:
// Add a new personality to the quiz
$('form#personality_editor').submit(function(e) {
e.preventDefault();
// Bind the loader to personality loader
BindPersonalityLoader();
// AJAX Call here
});
// Edit a personality already existing within the quiz
$('a.personality_edit').live('click', function(e) {
e.preventDefault();
// Bind loader for editing personality
BindLoadEditPersonalityLoader();
// Ajax call here
});