jGrowl:有一个id里面的函数,不会工作,只有没有id?

时间:2010-08-21 23:03:43

标签: jquery jgrowl

在普通的JS函数中:

$('#friendsPop').jGrowl("testtmee");

不会工作,但是:

$.jGrowl("testmeee");

工作得很好..我已经测试了所有内容,如果我在函数外部建立一个链接,那么正常的a:这样的链接:

<a href="javascript:void(0);" onclick="$('#friendsPop').jGrowl('testme');">link</a>

它也很好用。但我希望激活

$('#friendsPop').jGrowl("testtmee");

在ajax成功通话后,我需要一个ID。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

您必须将此添加到您的ajax请求中:

var mesScripts = document.getElementById("mapleft").getElementsByTagName("script");
for (var i=0; i<mesScripts.length; i++) {
    eval(mesScripts[i].innerHTML);

在ajax加载后改变<script>

答案 1 :(得分:1)

这是我的建议。由于无法向DIV放置jGrowl,无论是向左还是向右浮动,我们都会在渲染之后将其传输。以下是我在原始示例中的代码。

(function($){
    $.jGrowl.defaults.pool = 5;
    $.jGrowl.defaults.sticky = true;
    $.jGrowl.defaults.life = 2500;
    $.jGrowl.defaults.closer = true;
    $.jGrowl.defaults.open = function(e,m,o) {$("#jGrowl").css('right', $('#header').offset().left + 17);};

    /**
     * @todo Add the twitter avatars to tweets, via tweet.user["profile_image_url"]
     * @todo Find a way to calculate the dates relatively
     * @todo Test is a cookie plugin is available so that some of this data can be 'cached'
     */
    $.jTweet = function( username , total ) {
        $.getJSON("http://twitter.com/status/user_timeline/" + username + ".json?count=" + total + "&callback=?", function(response) { 
            $.each(response, function(i, tweet) {
                $.jGrowl( (tweet.text.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
                    return m.link(m);
                })) + ' [' + tweet.source + ']' , { 
                    header: tweet.created_at , 
                    } );
            });
        });
    };

    $.jTweet('jquery', 5);
})(jQuery);

这里重要的部分是:

$.jGrowl.defaults.open = function(e,m,o) {$("#jGrowl").css('right', $('#header').offset().left + 17);};

将jGrowl对象的right属性与my header的left属性对齐。这基本上转移了它的位置,使它看起来好像它在标题的div下面。

答案 2 :(得分:0)

我不时使用jGrowl,我不记得曾经在一组选定的jQuery对象上调用它。 jGrowl的全部意义在于它在窗口级别生成“未附加”消息 - 一个全局消息流,无论它们是如何被调用(或从哪里调用)。就像它所基于的Mac OS X Growl概念一样。

检查jGrowl documentation,我也没有看到任何像这样被调用的例子:

$('.something').jGrowl('message'); 
// what would this even mean in jGrowl terms?

总是这样:

$.jGrowl('message');

如果它偶尔以这种方式为你工作,这是偶然的偶然事件(我没有看过jGrowl源代码来弄清楚原因,但我确定答案就在那里)。

只需将其称为$.jGrowl('Like This')即可。