首页 > 解决方案 > 访问 $(this) 值返回未定义的 jquery

问题描述

我正在尝试访问$(this)select2 初始化内部,但它返回undefined.

$(".tags").each(function() {
    var placeholder = "Select Email";
    if($(this).attr('name') === 'names[]')
        placeholder = "Select Name";
    $(this).select2({
        tags: true,
        placeholder: placeholder,
        language: {
            noResults: function () {
                return 'Type and enter to add new';
            },
        },
        escapeMarkup: function (markup) {
            return markup;
        },
        createTag: function(params) {
            console.log($(this).attr('name')); // returns undefined
            if (params.term.indexOf('@') === -1)
                return null;
            return {
                id: params.term,
                text: params.term
            }
        }
    })
});

select2()为每个 初始化.tags。我需要在$(this)这里访问初始化内部。

我怎样才能做到这一点?

标签: javascriptjquerythisjquery-select2

解决方案


$(this)您可以在调用之前保留参考select2()

$(".tags").each(function() {
    var placeholder = "Select Email";
    var $that = $(this);


    if($that.attr('name') === 'names[]')
        placeholder = "Select Name";
    $that.select2({
        tags: true,
        placeholder: placeholder,
        language: {
            noResults: function () {
                return 'Type and enter to add new';
            },
        },
        escapeMarkup: function (markup) {
            return markup;
        },
        createTag: function(params) {
            console.log($that.attr('name'));
            if (params.term.indexOf('@') === -1)
                return null;
            return {
                id: params.term,
                text: params.term
            }
        }
    })
});

希望这可以帮助


推荐阅读