event.target.id仅适用于Chrome

时间:2011-12-05 19:51:58

标签: javascript jquery backbone.js

最奇怪的事情。

我有一个调用的函数:

var clicked_el = event.target.id;

此功能在FireFox中的此行中断。它适用于ie9,但不适用于8(因为ie8使用srcElement代替)。每次尝试抓住发起事件的元素的id都是我最终的完全熄火。

我认为有一种方法可以使用jQuery.Event来平滑浏览器的错误,但我无法正常工作。

有人能告诉我更好的浏览器一致方法吗?

这是函数,它是我骨干视图的一部分。

  open: function () {
    iconState = true;
    var self = this;
    var clicked_el = event.target.id;
        $('div.hr, div#footer_icons').animate({
            top : '-=300'
        }, 500, function () {
            if (innerContentIsVisible === false) {
                $('#a_close').fadeIn(500);
            }
        });
        $('div#article').animate({
            opacity : 0
        }, 500,function () {
            self.load_content(clicked_el);
        });
  },

更新

open函数是从另一个函数调用的,当我调用open函数时,我忘了传递事件参数,这就是它返回undefined的原因。

这是现在传递event param:

的函数
click: function(event) {
    if (iconState === false) {
        this.open(event);
    } else {
        var self = this;
        var clicked_el_icon = event.target.id;
        $('div#loaded_content').fadeOut(250, function() {
            self.load_content(clicked_el_icon);
        });
    }
      },

open: function (event) {
  iconState = true;
  alert(event);
  var self = this;
  var clicked_el = event.target.id;
    $('div.hr, div#footer_icons').animate({
        top : '-=300'
    }, 500, function () {
        if (innerContentIsVisible === false) {
            $('#a_close').fadeIn(500);
        }
    });
    $('div#article').animate({
        opacity : 0
    }, 500,function () {
        self.load_content(clicked_el);
    });
    },

谢谢......我不会忘记这一课。

1 个答案:

答案 0 :(得分:3)

您必须将“event”声明为“open”处理函数的参数。