1

我在 jquery 中有以下触发器:

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

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

4

4 回答 4

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>');
});

在将函数的引用添加contracton()方法后,eventore变量会自动作为第一个参数传递给函数。

小提琴

于 2013-08-07T14:54:26.110 回答
3

您是否“传递”了合约功能?

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

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

于 2013-08-07T14:54:16.053 回答
0

这就是内联函数的样子。我也会用stopPropagation.

$('.text').on('click', '.readless', function(event){
    event.preventDefault();
    event.stopPropagation();
});
于 2013-08-07T14:55:03.643 回答
0

实际上,您似乎不需要传递参数,但您只需要设置它以便函数接收它。在api.query.com 文档中快速了解bind()...

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

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

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

简单,工作演示

于 2020-06-16T16:15:41.537 回答