Обратный вызов jQuery qTip не работает - PullRequest
3 голосов
/ 13 октября 2010

У меня вызывается qTip для элементов в таблице.

$('#orders_table a[rel]').each(function (){
            $(this).click(function(){
                return false;
            }); 
            $(this).qtip({
                content: {
                    // Set the text to an image HTML string with the correct src URL to the loading image you want to use
                    text: 'Loading...',
                    url: $(this).attr('rel'),
                    // Use the rel attribute of each element for the url to load
                    title: {
                        text: 'Order Number ' + $(this).text(),
                        // Give the tooltip a title using each elements text
                        button: 'Close' // Show a close link in the title
                    }
                },
                position: {
                    corner: {
                        target: 'bottomMiddle',
                        // Position the tooltip above the link
                        tooltip: 'topMiddle'
                    },
                    adjust: {
                        screen: true // Keep the tooltip on-screen at all times
                    }
                },
                show: {
                    when: 'click',
                    solo: true // Only show one tooltip at a time
                },
                hide: 'unfocus',
                style: {
                    tip: true,
                    // Apply a speech bubble tip to the tooltip at the designated tooltip corner
                    border: {
                        width: 0,
                        radius: 4
                    },
                    name: 'light',
                    // Use the default light style
                    width: 570 // Set the tooltip width
                }
            })
        });

У меня тогда есть следующая функция обратного вызова:

$('#orders_table a[rel]').each(function (){

            $(this).qtip({
            api: {
                onContentLoad:function() {
                        $('#select').change(function(){

                                alert('test');
                        });    
                }
            }                         
            })
        });

qTip загружает динамический контент. Этот динамический контент имеет поле выбора с идентификатором «select».

По какой-то причине она, похоже, не вызывает функцию ПОСЛЕ того, как qTip загрузил динамический контент.

Есть идеи? Я пробовал onRender и onContentUpdate, которые не подходят.

Спасибо!

Ответы [ 3 ]

1 голос
/ 13 октября 2010

На самом деле для разных элементов управления нужны особые средства, разные ID.Так что Попытка с другим идентификатором означает передачу некоторого аргумента и изменение идентификатора при динамическом создании элемента управления.

Это может решить вашу проблему.

0 голосов
/ 13 октября 2010

Проблема не в обратном вызове, а в загрузке контента с определенным идентификатором. Идентификаторы должны быть уникальными на странице, поэтому вместо этого используйте здесь класс, чтобы при загрузке более одного qTip не отменялось правило уникального идентификатора (в результате #select возвращает first из этих элементов нет их всех).

Вы можете сделать это, изменив свой выбор, чтобы иметь класс (или нет, если это единственный <select> в содержании), например:

<select class="mySelect">

Затем при связывании найдите этот элемент в обратном вызове, например:

$('#orders_table a[rel]').each(function (){
  $(this).qtip({
    api: {
      onContentLoad:function() {
        this.elements.content.find('select.mySelect').change(function() {
          alert('test');
        });    
      }
    }                         
  });
});

Также, если вам не нужна петля .each() по другой причине, вы можете сократить ее до:

$('#orders_table a[rel]').qtip({
  api: {
    onContentLoad:function() {
      this.elements.content.find('select.mySelect').change(function() {
        alert('test');
      });    
    }
  }
});
0 голосов
/ 13 октября 2010

Я не уверен на 100%, если это та же проблема, что и у нас, но когда вы устанавливаете привязку qTip к ссылке ajax, и эта ссылка ajax запускает повторную визуализацию, qTip в конечном итогекоренится в DOM и обратные вызовы и таймеры просто перестают работать.

Мы решили это, привязав qTip к ближайшему элементу.Надеюсь, это поможет.

...