jGrowl: с идентификатором внутри функции, не будет работать, только если нет идентификатора? - PullRequest
0 голосов
/ 22 августа 2010

внутри обычной функции JS:

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

Не работает, но:

$.jGrowl("testmeee");

Работает просто отлично .. Я все проверил, и если я делаю ссылку вне функции, то обычная ссылка a:

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

Это тоже отлично работает. Но я хочу активировать

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

После успешного вызова AJAX, и мне нужно иметь ID.

Что я могу с этим поделать?

Ответы [ 3 ]

1 голос
/ 30 декабря 2010

Вы должны добавить это к вашему запросу ajax:

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

Реформирует <script> после загрузки ajax.

1 голос
/ 15 января 2012

Это мое предложение. Поскольку нет способа поместить jGrowl относительно DIV, плавающего влево или вправо, мы передадим его после рендера. Вот мой код ниже, взятый из исходного примера.

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

Который выравнивает свойство right объекта jGrowl и свойство left моего заголовка. Это в основном передает его местоположение, чтобы оно выглядело так, как будто оно находится под div заголовка.

0 голосов
/ 22 августа 2010

Время от времени я использовал jGrowl, и я не помню, чтобы когда-либо вызывал его для выбранного набора объектов jQuery. Весь смысл jGrowl в том, что он создает «неприкрепленные» сообщения на уровне окна - единый глобальный поток сообщений, независимо от того, как они вызываются (или откуда). Так же, как концепция Mac OS X Growl, на которой она основана.

Проверяя документацию jGrowl , я также не вижу ни одного примера, где она называется так:

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

Это всегда так:

$.jGrowl('message');

Если он иногда так работает для вас, это случайный случай (я не смотрел исходный код jGrowl, чтобы выяснить, почему, но я уверен, что ответ есть).

Просто назовите это $.jGrowl('Like This') и все готово.

...