Почему "$(this)" не работает.data ширины на jquery-backstretch?

Поэтому я пытаюсь заставить $ (это) работать.

Это не работает:

$(".tournament-thumb").backstretch($(this).data("url"));

Но это делает:

$(".tournament-thumb").backstretch($(".tournament-thumb").data("url"));

Мне нужно взять URL из данных. Вот HTML-код:

<div class="tournament-thumb" data-url="{{asset('images/tournament/' . $tournament->image)}}">

Я пропускаю какую-то важную часть с $(this) и.data?

1 ответ

Решение

С помощью this в параметре, не меняет его контекст. он по-прежнему ссылается на тот же объект, как и где-либо еще в окружающей области видимости

function x(){
    //this in here and the function parameter call refers to the same object
    console.log(this)
    $(".tournament-thumb").backstretch($(this).data("url"));
}

в jQuery, если вы передаете обратный вызов функции, внутри этих функций this наиболее вероятно будет ссылаться на элемент dom, используемый в настоящее время.

Если бы это было что-то вроде

$(".tournament-thumb").backstretch(function(){
    //do something
    //here this might refer to the tournament-thumb element
});
Другие вопросы по тегам