我已经阅读了有关事件问题的Firefox上15个不同的堆栈溢出问题。他们并没有密切关注我的功能,但我认为这是一个直截了当的问题。我已经尝试了一切似乎对他们的问题有用的东西,但都失败了。
我的问题是在Firefox中,没有任何反应,这是由我的代码订单引起的。订单非常重要,否则我会导致不必要的多个按钮附加。我至少理解为什么它不是基于点击功能添加和删除类。我不明白的是,我添加了var event = event || window.event;
并尝试了if(!event) event = window.event;
。他们似乎什么都不做,所以我甚至尝试将window.event放在我刚刚举办过活动的任何地方,这也没有用。
我在IE中的问题,这个至少允许我点击并展开文章,这篇文章很棒,但是一旦点击它就不会附加我的按钮。这个并不重要,因为关闭文章按钮不是生死攸关的。
我的jQuery
function newsArticle() { // Articles Functionality
$('.article').on('click', function() {
var self = this;
var button = $('<span />', {
'class': 'close',
text: 'Click to minimize article',
on: {
click: function (e) {
e.stopPropagation();
$(self).stop(true).toggleClass('fullArticle article');
$(this).remove();
}
}
});
if(!event) event = window.event;
if($(event.target).is('.article')) {
$(this).append(button);
}
else if($(event.target).parents().is('.article')) {
$(this).append(button);
}
$(this).removeClass('article').addClass('fullArticle');
});
}
newsArticle();
答案
function newsArticle() { // Articles Functionality
$('.article').on('click', function(e) {
var self = this;
var button = $('<span />', {
'class': 'close',
text: 'Click to minimize article',
on: {
click: function (e) {
e.stopPropagation();
$(self).stop(true).toggleClass('fullArticle article');
$(this).remove();
}
}
});
if($(e.target).is('.article')) {
$(this).append(button);
}
else if($(e.target).parents().is('.article')) {
$(this).append(button);
}
$(this).removeClass('article').addClass('fullArticle');
});
}
newsArticle();
如果jsfiddle没有显示问题,那么在实时网站上查看 - &gt; site
只需向下滚动,在页脚上方有4个标签,点击“在新闻中”。
如果您还有其他需要,请告诉我并抱歉提出这个问题,但我找不到有效的答案。
答案 0 :(得分:4)
使用jQuery时,您不需要进行跨浏览器检查(if(!event) event = window.event;
等),因为jQuery会为您执行此操作。但是 应该将事件作为事件处理程序中的参数接受:
$('.article').on('click', function(event) {
我喜欢使用e
作为惯例,以避免混淆:
$('.article').on('click', function(e) {