Атрибут jQuery (...) в параметре функции не определен

Я использую плагин jQuery под названием webuiPopover. Это добавляет поповер к ссылкам. Когда пользователь наводит на ссылку, содержимое всплывающего окна выбирается через AJAX. Это требует определенного url с соответствующими параметрами.

Итак, это код:

$(document).ready(function() { 
    $(".qa-user-link").webuiPopover({
        placement:"auto",
        trigger:"hover",
        type:"async", 
        cache:false,
        url:"./qa-plugin/q2a-user-popover/qa-user-popover-details.php?handle="+$(this).attr("data-id")+"&incdir=%2Fhome%2Fpeatar5%2Fpublic_html%2Fbiophilie%2Fqa-include%2F",
        content:function(data) {return data;}
    });
});

Как вы можете видеть, я вычисляю 'url', используя jQuery's attr(...) функция. К сожалению, этот маленький кусочек кода всегда возвращает "неопределенный".

Если я использую тот же кусок кода ($(this).attr("data-id")) в content параметр (чтобы дать function (data) {return $(this).attr("data-id");} это работает отлично.

Что не так?

1 ответ

Решение

this относится к document внутри обратного вызова $(document).ready, Это работает внутри content обратный вызов, потому что плагин привязывает элемент к content когда это вызывает.

Если вы хотите иметь отдельный URL для каждого поповера, вам нужно будет привязать плагин popover отдельно для каждого элемента:

$(document).ready(function() { 
    $(".qa-user-link").each( function ( ) {
        var $this = $(this);
        $this.webuiPopover({
            placement:"auto",
            trigger:"hover",
            type:"async", 
            cache:false,
            url:"./qa-plugin/q2a-user-popover/qa-user-popover-details.php?handle="+$this.attr("data-id")+"&incdir=%2Fhome%2Fpeatar5%2Fpublic_html%2Fbiophilie%2Fqa-include%2F",
            content:function(data) {return data;}
        });
    });
});
Другие вопросы по тегам