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

时间:2015-01-17 19:54:21

标签: jquery html jquery-plugins jquery-attributes

我正在使用名为webuiPopover的jQuery插件。它为链接添加了一个popover。当用户悬停链接时,弹出窗口的内容将通过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'。 不幸的是,这段小代码总是返回'undefined'。

如果我在$(this).attr("data-id")参数中使用相同的代码(content)(以提供function (data) {return $(this).attr("data-id");},则可以正常使用。

出了什么问题?

1 个答案:

答案 0 :(得分:3)

this指的是document回调中的$(document).ready。它适用于content回调,因为插件在content调用它时是binding的元素。

如果你想为每个popover分别设置一个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;}
        });
    });
});