event.target 中未在 Firefox 中定义,在 IE 中出现小错误

event.target in not defined in Firefox and minor error in IE

本文关键字:错误 IE 定义 target Firefox event      更新时间:2023-09-26

我已经在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 没有显示问题,则在实时站点上查看 -->站点

只需一直向下滚动,在页脚上方有4个选项卡,单击"在新闻中"。

如果您需要其他任何东西,请告诉我,很抱歉提出这个问题,但我无法找到有效的答案。

当你使用jQuery时,你不需要做跨浏览器检查(if(!event) event = window.event;等(,因为jQuery会为你做这件事。但是,您应该接受事件作为事件处理程序中的参数:

$('.article').on('click', function(event) {

我喜欢使用e作为约定,以避免混淆:

$('.article').on('click', function(e) {