如何将事件传递给命名函数。('click')?

时间:2013-08-07 14:51:26

标签: jquery

我在jquery中有以下触发器:

$('.text').on('click', '.readless', contract);

在合同中,我想使用event.preventDefault()但这在firefox中不起作用,所以我需要将事件传递给合同。我该怎么做?

4 个答案:

答案 0 :(得分:4)

你可以这样做:

$(function () {

    // Attach Event
    // new way (jQuery 1.7+) - on(events, selector, handler);
    $('.text').on('click', '.readless', contract);

    function contract(e) {
        e.preventDefault();
        alert(e.type);
    }

    // Create elements dynamically
    $('.text').append('<div class="readless">click me</div>');
});

将函数contract的引用添加到on()方法后,evente变量将自动作为第一个参数传递给函数。

FIDDLE

答案 1 :(得分:2)

你是否'通过'合同函数?

contract(e){
     e.preventDefault();
}

即使没有从click事件中传递它,e var也应该在接收端可用。

答案 2 :(得分:0)

这就是内联函数的样子。我还会使用stopPropagation

$('.text').on('click', '.readless', function(event){
    event.preventDefault();
    event.stopPropagation();
});

答案 3 :(得分:0)

实际上,似乎您不需要传递参数,但是您只需要进行设置即可使函数接收。在api.query.com documentation迅速达到bind() ...

$( "#foo" ).bind( "click", function( event ) {

因此,您所需要做的就是$("#foo").bind("click", functionName)并将函数定义为function(event) {...}。根据您的具体情况...

function contract(e) {
    return e.preventDefault();
}

Simple, working demo