触发事件时indexOf错误

时间:2016-01-02 07:37:03

标签: javascript jquery

在JavaScript中,我尝试使用jquery的trigger()函数触发以下事件:

    document.addEventListener('keydown', function(e) {
  (
    // e.which == 34 ||  PAGE DOWN
    // e.which == 32 ||  SPACE
    axis == 'X' && e.which == 39 // RIGHT
    // axis == 'Y' && e.which == 40 // BOTTOM
  ) && deck.next();
  (
    // e.which == 33 || PAGE UP
    axis == 'X' && e.which == 37 // LEFT
    // axis == 'Y' && e.which == 38 // TOP
  ) && deck.prev();
});

我正在尝试使用以下行触发此事件侦听器:

$(document).trigger({eventType:"keydown", which:39});

但是当我这样做时,我收到以下错误:

  

未捕获的TypeError:q.indexOf不是函数

我希望该行触发deck.next();

请告知我做错了什么。

3 个答案:

答案 0 :(得分:2)

添加jquery事件监听器,然后调用它 (你需要jquery事件监听器,因为你用jquery触发它)

interface IEnhanceable<T>
{
    IEnumerable<T> EnhanceWith(IEnumerable<aGenericType> foo);
}

并像这样触发它

 $(document).on('keydown', function(e) {
  (
    // e.which == 34 ||  PAGE DOWN
    // e.which == 32 ||  SPACE
    axis == 'X' && e.which == 39 // RIGHT
    // axis == 'Y' && e.which == 40 // BOTTOM
  ) && deck.next();
  (
    // e.which == 33 || PAGE UP
    axis == 'X' && e.which == 37 // LEFT
    // axis == 'Y' && e.which == 38 // TOP
  ) && deck.prev();
});

答案 1 :(得分:2)

$(document).trigger("keydown", {which: 39});

这是correct syntax ...

答案 2 :(得分:1)

我认为您的触发器代码在语法上是错误的

var e = jQuery.Event("keydown"); 
e.which = 39; // # Some key code value 
$(document).trigger(e);

此外,jquery触发器不会识别通过普通javascript附加的处理程序。因此,您必须仅使用jquery附加处理程序。 像这样:

 var e = jQuery.Event("keydown");
 e.which = 39;
 $(document).trigger(e);

$(document).keydown(function(event){});

$(document).on('keydown',function(event){});