我有以下JQuery的模塊,摺疊頁面上的形式,使點擊一個按鈕,就會發現它:JQuery的click事件不工作的Firefox
(function (jQuery) {
"use strict";
//Attach this new method to jQuery
jQuery.fn.extend({
module_content_form_expander: function (options) {
// Iterate over the current set of matched elements
return this.each(function() {
var form_expander_thing = jQuery(this);
var strButtonInit = options.initial_button_text;
var strButtonActive = options.active_button_text;
var module_thing = form_expander_thing.find('.module-content');
var content = form_expander_thing.find('.visible-content');
var button = form_expander_thing.find('.trigger');
var cancel = form_expander_thing.find('.cancel-action');
module_thing.hide();
content.css('opacity', 0);
button.css('margin-top', '0.7em');
button.attr('value', strButtonInit);
button.on('click', function (e) {
if (!content.is(':visible')) {
e.preventDefault();
jQuery(this).hide();
jQuery(this).removeClass('action-primary');
jQuery(this).addClass('action-secondary');
jQuery(this).attr('disabled', 'disabled');
module_thing.slideToggle(300, function() {
content.animate({'opacity': 1});
button.attr('value', strButtonActive);
button.css('margin-top', '0');
button.fadeIn();
cancel.css('display', 'block');
});
}
});
cancel.on("click", function (ev) {
ev.preventDefault();
jQuery(this).hide();
button.removeClass('action-secondary');
button.addClass('action-primary');
content.css('opacity', 0);
module_thing.slideToggle(300, function() {
button.css('margin-top', '0.7em');
button.attr('value', strButtonInit);
button.removeAttr('disabled');
jQuery('.required').val(''); // Need non-required elements cleared too, perhaps?
var $newNoteTagInput = $('#tag_list');
if ($newNoteTagInput.length) {
$newNoteTagInput.tokenInput('clear');
$newNoteTagInput.blur(); // Hides dropdown.
}
});
});
});
}
});
})(jQuery);
在頁面加載,它的觸發像這樣:
var app = {
initApp : function() {
jQuery('form#new-placement-form.expandable-module').module_content_form_expander({'initial_button_text': 'Add a new placement', 'active_button_text': 'Add' });
}
}
jQuery(function() {
app.initApp();
}
它工作正常,它也可以在Chrome中刷新頁面後工作。但是,在Firefox上,它只有在第一次加載頁面時才起作用。刷新後,它什麼都不做。去一個不同的頁面,然後通過鏈接返回使其再次工作。
Firebug顯示單擊按鈕時未連接到button
事件的點擊處理程序,雖然沒有錯誤,但看起來好像連接正常。
這可能是什麼原因造成的?
是的,我寫了,但我不太清楚,如果我錯過了一些重要的東西。我已更新以顯示在頁面加載時如何調用它。我還可以在哪裏放置點擊處理程序(這是重複使用多個窗體)? –