jQuery 函数参数中的 attr(...) 未定义

jQuery's attr(...) in function parameter is undefined

我正在使用一个名为 webuiPopover 的 jQuery 插件。它向 links 添加了一个弹出窗口。当用户将鼠标悬停在 link 上时,弹出窗口的内容将通过 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;}
    });
});

如您所见,我使用 jQuery 的 attr(...) 函数计算了 'url'。 不幸的是,那段代码总是 returns 'undefined'.

如果我在 content 参数中使用相同的一段代码 ($(this).attr("data-id"))(给 function (data) {return $(this).attr("data-id");} 它工作正常。

怎么了?

this指的是$(document).ready回调里面的document。它在 content 回调中工作,因为插件在调用它时是 bindingcontent 的元素。

如果您希望每个弹出框都有不同的 url,您必须为每个元素分别绑定弹出框插件:

$(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;}
        });
    });
});