jQuery 带有点击事件的自定义插件:提供选项?

jQuery custom plugin with click event: Provide options?

我正在尝试制作我的第一个 jQuery-Plugin,所以请对我温柔一些。

目的是使 div 子元素可投票。单击时应进行投票。

这是我的实际代码:

(function($){
    $.fn.makeVotable = function(options) {
        var settings = $.extend({
            // defaults:
            url: "/vote",
        }, options );

       this.bind("click.makeVotable", function (e) {
            var parent = $(this).parent();

            var foreign_type = $(parent).attr('data-vote-foreign-type');
            var foreign_id = $(parent).attr('data-vote-foreign-id');
            var vote_id = $(parent).attr('data-vote-id');
            var vote = $(e.target).attr('data-vote-type');
            var what;

            if($(e.target).is('.voted')) {
                what = 'delete';
            } else if($(parent).children().hasClass('voted')) {
                what = 'update';
            } else {
                what = 'add';
            }

            $.post(
                settings.url,
                { what: what, foreign_type: foreign_type, foreign_id: foreign_id, vote: vote, vote_id: vote_id }
            ).done(function( data ) {

                $(parent).children().removeClass('voted');

                if(what != 'delete') {
                    $(e.target).addClass('voted');
                }

                if(what == 'add') {
                    $(parent).attr('data-vote-id',data.id);
                }

            }).fail(function() {
                /* Heavy error like 500 */
            });
        });
    };
})(jQuery);

$('.votable > i').makeVotable(
    url: "{{URL::to('vote')}}", /* laravel way to get the URL */
);

如果我删除 "var settings [...]" 部分并只传递 url 而没有 "url:" 我可以使用 options.url 访问它但是使用这种方法我得到这个错误:

SyntaxError: Unexpected token ':'. Expected ')' to end a argument list.

我做错了什么?

你错过了一些东西(一对 {}

$('.votable > i').makeVotable(
   { url: "{{URL::to('vote')}}" }
);