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

时间:2015-02-16 21:53:50

标签: jquery jquery-plugins

我试图制作我的第一个jQuery-Plugin,所以请对我温柔。

目的是使divs子元素成为可投票的。点击即可进行投票。

这是我的实际代码:

(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设置[...]"部分只是传递网址没有"网址:"我可以使用options.url访问它,但是使用这种方法我得到了这个错误:

  

SyntaxError:意外的令牌':'。期待')'结束参数列表。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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