Javascript 访问$(此)值将返回未定义的jquery

Javascript 访问$(此)值将返回未定义的jquery,javascript,jquery,this,jquery-select2,Javascript,Jquery,This,Jquery Select2,我试图访问select2初始化中的$(this),但它返回未定义的 $(".tags").each(function() { var placeholder = "Select Email"; if($(this).attr('name') === 'names[]') placeholder = "Select Name"; $(this).select2({ tags: true, placeholder: placeh

我试图访问select2初始化中的
$(this)
,但它返回
未定义的

$(".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()
为每个
标记初始化。我需要在这里的初始化中访问
$(this)


我该怎么做呢?

在调用
select2()


希望这有帮助

问题是因为
createTag
函数没有在实例化
select2
的元素的作用域下运行

要解决此问题,您需要保留对原始元素的引用,这可以通过将其存储在
each()
处理程序中的变量中来实现:

$(“.tags”)。每个(函数(){
var$tag=$(这个);
//其他逻辑。。。
$tag.select2({
//其他逻辑。。。
createTag:函数(参数){
console.log($tag.prop('name'));
if(参数term.indexOf('@')=-1)
返回null;
返回{
id:params.term,
文本:params.term
}
}
})
});
这可能会为您提供更多信息
$(".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
            }
        }
    })
});