Javascript 调用jquery函数并在arrow键上向其传递对象

Javascript 调用jquery函数并在arrow键上向其传递对象,javascript,jquery,function,keypress,Javascript,Jquery,Function,Keypress,尝试调用函数“clickEvent()”,并使用jQuery向其传递一个带有arrow-keyUp属性的obj。但是我还没有达到功能。这是代码。谢谢 请注意:我正在分叉现有代码,但正在向其中添加my arrowPress事件。因此,在(direction!=null)区域中,所有内容都应保持文档就绪状态。 $(document).ready(function() { $('body').keyup(function(event) { var direction = nul

尝试调用函数“clickEvent()”,并使用jQuery向其传递一个带有arrow-keyUp属性的obj。但是我还没有达到功能。这是代码。谢谢

请注意:我正在分叉现有代码,但正在向其中添加my arrowPress事件。因此,在(direction!=null)区域中,所有内容都应保持文档就绪状态。

$(document).ready(function() {
    $('body').keyup(function(event) {
        var direction = null;

        // handle cursor keys
        if (event.keyCode == 37) {
            // slide left
            direction = 'prev';
        } else if (event.keyCode == 39) {
            // slide right
            direction = 'next';
        }

        if (direction != null) {
            //alert($('.'+ direction).attr('rel'));
            //need to pass the alert above as an obj to the function clickEvent() below.
        }
    });

}); //end $(document).ready


//function on external .js src
(function($) {
    function clickEvent(obj) {
        alert(obj.attr("rel"));
    }

    $.fn.slidingPage = function(options) {
        $el = $(this);
    }
})(jQuery); //end ext js scr

函数
clickEvent
位于另一个函数的作用域内,请将它们置于同一作用域或更高的作用域中:

function clickEvent(obj) {
    alert(obj.attr("rel"));
}

$.fn.slidingPage = function(options) {
    var $el = $(this);
};

(function($) {
    $('body').keyup(function(event) {
        var direction = null;

        // handle cursor keys
        if (event.keyCode == 37) {
            // slide left
            direction = 'prev';
        } else if (event.keyCode == 39) {
            // slide right
            direction = 'next';
        }

        if (direction != null) {
            clickEvent( $('.'+ direction) );
        }
    });

});

没有理由将
clickEvent
slidingPage
声明放在文档就绪处理程序中。

如果需要将代码包装到匿名函数中以防止全局变量污染,则事件和函数代码应放在同一范围内

您可能需要在.prev和.next上触发单击事件

$(document).ready(function() {
    $('body').keyup(function(event) {
        var direction = null;

        // handle cursor keys
        if (event.keyCode == 37) {
            // slide left
            direction = 'prev';
        } else if (event.keyCode == 39) {
            // slide right
            direction = 'next';
        }

        if (direction != null) {
            $('.'+ direction).click()
        }
    });

}); //end $(document).ready

感谢Andrey Kuzmin

if (direction != null) {

   $('.'+ direction).click();       

}

抱歉,我忘了提到我正在分叉现有代码,但正在向其中添加我的arrowPress事件。因此,在(direction!=null)区域中,所有内容都应保持文档准备就绪的预期状态。@fhonics仅需更改external.js。如果你不能更改它,你就不能调用其中的函数,因为它在一个函数中。OK,我想这很简单。不过我可以试试。JS不是我的背景,所以我不想错过太多已经运行的现有代码。但是我会试着在几分钟内让你知道,我打破了现有的分叉代码,仍然无法在arrowPress上工作。我认为我应该更改的只是If中的信息!=null语句或尽可能减少对ext js的更改。哪些代码是您的,哪些是分叉代码?如果
external.js src
是分叉的,那么请提供一些关于如何在分叉代码中使用clickEvent的附加信息。如果它绑定到一些元素,那么您可以在它们上触发它而不修改js文件。这就是我从prev btn得到的,如果按钮已经工作,那么为什么您不在document keypressed事件上触发它的clicked事件呢?您是否尝试过将
$('..+方向)放入
中。如果(方向!=null)
检查,请单击
中的()!!!!!!grrrrr!!!它是有效的。。。我觉得这很简单。我读了各种各样的东西,尝试了很多其他的东西,但不是那样。谢谢你,巴德。我欠你一杯啤酒。