jQuery qTip - триггер перед созданием

я пытаюсь вызвать someFunction() до создания qtip

$('.selector').qtip({
   content: {
      text: someFunction(this.id) }
});

Этот код работает, но я думаю, что это грязное решение. Может быть, есть start: event, как в большинстве плагинов jquery (например, перетаскиваемый)? Я ничего не нашел об этом в документации.

EDIT: Хорошо, этот код не будет работать. Он запускает функцию при загрузке страницы, а не при наведении.

ОБНОВЛЕНИЕ:

function someFunction(someId)
{
    // some code ...
    var searchResult = ' ... some results from the search -> from '+someId+' ... ';
    return searchResult;

}

person Peter    schedule 15.09.2011    source источник


Ответы (3)


Используйте опцию обратного вызова beforeShow : , это лучший способ сделать это.

Ссылка здесь.

Удалите также скобки из someFunction.

$('.selector').qtip({
    api : {
        beforeShow : function (someId)
        {
            // some code ...
            var searchResult = ' ... some results from the search -> from '+someId+' ... ';
            // place text in tooltip
        }
    }
});

Рабочий образец.

person AlexBay    schedule 15.09.2011
comment
Он хочет заменить текст при каждом событии onhover, функция someFunction должна заменить его напрямую. content: { text: напишите это только один раз при загрузке страницы - person AlexBay; 15.09.2011
comment
jsbin.com/olafop/edit#preview Не могли бы вы протестировать свой код в этом примере? - person Peter; 16.09.2011
comment
Я думаю, что ваше решение быстрее. - person Peter; 16.09.2011
comment
Использование предоставленного qTip API для обратных вызовов действительно быстрее. Спасибо за рассмотрение :) - person AlexBay; 16.09.2011

Вам нужно пройти someFunction, а не someFunction(). Последний вызывает функцию и присваивает возвращаемое значение text, а затем больше никогда не вызывает функцию. Передав саму функцию, qTip увидит функцию и вызовет ее при необходимости.

person ThiefMaster    schedule 15.09.2011
comment
Не могли бы вы привести небольшой пример передачи самой функции. Спасибо за быстрый ответ! - person Peter; 15.09.2011
comment
В этом случае используйте анонимную функцию: text: function() { someFunction(self.id); }. Перед вызовом функции qtip добавьте это: var self = this; — это гарантирует, что вы получите доступ к правильному объекту внутри замыкания (у которого будет собственный this, привязанный к глобальному объекту) - person ThiefMaster; 15.09.2011
comment
Я не понимаю :/ Вот небольшой пример. jsbin.com/olafop/edit#preview Можете ли вы отредактировать код? Я был бы очень признателен за это. - person Peter; 16.09.2011
comment
Я только что заметил, что вы используете устаревший qtip1. Вам действительно следует переключиться на qtip2; возможно, v1 еще не поддерживал функцию обратного вызова. - person ThiefMaster; 16.09.2011

В Qtip2 он изменился на события пользовательского интерфейса в стиле jquery.

$('.selector').qtip({
   events: {
      render: function(event, api) { }, // old onRender
      show: function(event, api) {}, // old beforeHide (return false or call event.preventDefault() to stop the show)
      hide: function(event, api) {} // old beforeHide (same as above)
   }
})
person amdstorm    schedule 23.07.2014