1

我正在写一个函数:

(function($) {
    $.fn.openBox = function(theId) {
    // do something
    };
})(jQuery);

和几个像这样调用我的函数的链接:

<a href="#" onclick="$(this).openBox('#theBoxId');">Open the box !</a>

我知道我可以通过return false来防止默认行为:

<a href="#" onclick="$(this).openBox('#theBoxId'); return false">Open the box !</a>

但我想把它放在我的 jQuery 函数中......我已经用 event.target 进行了测试,但它似乎不起作用......

4

2 回答 2

1

您可以return false;在插件内部,并在属性openBox返回该值;onclick

(function($) {
    $.fn.openBox = function(theId) {
        return false;
    };
})(jQuery);

接着:

<a href="#" onclick="return $(this).openBox('#theBoxId');">Open the box !</a>

然而,这远非理想。jQuery 应该是可链接的;但是通过返回false而不是this,你不能再做:$('foo').openBox().trigger('change')等等。

应该做的是以jQuery 方式附加事件,捕获事件对象并调用preventDefault()

jQuery.fn.openBox = function (id) {
    return this.on('click', function (e) {
        e.preventDefault();

        // now open your box `id`.
    });
}

$('a').openBox('#theBoxId');
于 2012-04-25T09:29:12.557 回答
0

不要onclick在元素中使用,而是将选择器放在数据属性中:

<a href="#" data-openbox="#theBoxId">Open the box !</a>

然后为具有该数据的所有链接绑定一个点击事件:

$(function(){
  $('a[data-openbox]').click(function(e){
    e.preventDefault();
    var selector = $(this).data('openbox');
    // do something
  });
});

演示:http: //jsfiddle.net/Guffa/EjLsQ/

于 2012-04-25T09:36:21.507 回答