Javascript 检测单击子节点并通过事件处理程序发送

Javascript 检测单击子节点并通过事件处理程序发送,javascript,Javascript,我有一个事件处理程序: //Event Handler var bindEvt = (function () { "use strict"; if (document.addEventListener) { return function (element, event, handler) { element.addEventListener(event, handler, false); }; } retu

我有一个事件处理程序:

//Event Handler
var bindEvt = (function () {
    "use strict";
    if (document.addEventListener) {
        return function (element, event, handler) {
            element.addEventListener(event, handler, false);
        };
    }
    return function (element, event, handler) {
        element.attachEvent('on' + event, handler);
    };
}());
这段代码通过菜单元素循环,并检测是否单击了一个

// Ajax article loading
function test(){var menuitem = document.getElementsByTagName('nav')[0].childNodes;
    for(var i= 0; i < menuitem.length; i++){
        bindEvt(menuitem[i], "click", loadajax);
    }
};

function loadajax () {
    alert('yo')
}
bindEvt(window, "load", test);
//Ajax文章加载
函数测试(){var menuitem=document.getElementsByTagName('nav')[0].childNodes;
对于(变量i=0;i
现在我的问题是,我希望
loadajax()
知道单击了什么项目,但我似乎无法确定如何将参数从
test()
传递到
loadajax()

我该怎么做?我尝试了几件事,但它似乎总是打破了剧本:(


感谢您的反馈!

如果您只是想知道单击了哪个对象,那么您可以在事件处理程序中使用
this
的值。您不必将该值传递给loadajax。事件系统将
this
设置为导致事件的对象。您还可以引用
event.target

function loadajax (event) {
    event = event || window.event;   // deal with old IE

    // `this` points to the object that caused the event

    alert('yo');
}
X应为事件类型,并具有lotsa良好细节:

interface Event {

  // PhaseType
  const unsigned short      CAPTURING_PHASE                = 1;
  const unsigned short      AT_TARGET                      = 2;
  const unsigned short      BUBBLING_PHASE                 = 3;

  readonly attribute DOMString        type;
  readonly attribute EventTarget      target;
  readonly attribute EventTarget      currentTarget;
  readonly attribute unsigned short   eventPhase;
  readonly attribute boolean          bubbles;
  readonly attribute boolean          cancelable;
  readonly attribute DOMTimeStamp     timeStamp;
  void               stopPropagation();
  void               preventDefault();
  void               initEvent(in DOMString eventTypeArg, 
                               in boolean canBubbleArg, 
                               in boolean cancelableArg);
};

在你编辑之前,我就试过了,事实上,我没有得到[I]的值……你知道解决这个问题的方法吗?老兄:D,一个简单的“这个”……现在很明显。谢谢:)。完美的答案确实是:)。我不知道“this”是在系统范围内设置的,而不仅仅是在一个特定的函数中。
interface Event {

  // PhaseType
  const unsigned short      CAPTURING_PHASE                = 1;
  const unsigned short      AT_TARGET                      = 2;
  const unsigned short      BUBBLING_PHASE                 = 3;

  readonly attribute DOMString        type;
  readonly attribute EventTarget      target;
  readonly attribute EventTarget      currentTarget;
  readonly attribute unsigned short   eventPhase;
  readonly attribute boolean          bubbles;
  readonly attribute boolean          cancelable;
  readonly attribute DOMTimeStamp     timeStamp;
  void               stopPropagation();
  void               preventDefault();
  void               initEvent(in DOMString eventTypeArg, 
                               in boolean canBubbleArg, 
                               in boolean cancelableArg);
};