JQuery Cluetip не активируется до тех пор, пока после зависания или события щелчка - PullRequest
2 голосов
/ 19 апреля 2010

Я не уверен, что является причиной этого, но я использую cluetip и привязываю его к живому событию (щелчок или ввод мыши), но в каждой ситуации cluetip не срабатывает до тех пор, пока не произойдет один щелчок или событие зависания. Я использую событие live для контента, загруженного ajax, но у меня также есть эта проблема с контентом, не загруженным Ajax. Я не уверен, почему это происходит - кто-нибудь может увидеть, где я могу пойти не так? Большое спасибо.

$("a.jTip").live("click", function(){
            $('a.jTip').cluetip({
                attribute: 'href',
                cluetipClass: 'jtip',
                arrows: true,
                activation: 'click',
                ajaxCache: false,
                dropShadow: true,
                sticky: true,
                mouseOutClose: false,
                closePosition: 'title'
            })
            return false;
        });

Ответы [ 5 ]

2 голосов
/ 19 апреля 2010

Для этого все еще можно использовать плагин livequery() , вот как это будет выглядеть:

$('a.jTip').livequery(function() {
  $(this).cluetip({
    attribute: 'href',
    cluetipClass: 'jtip',
    arrows: true,
    activation: 'click',
    ajaxCache: false,
    dropShadow: true,
    sticky: true,
    mouseOutClose: false,
    closePosition: 'title'
  });
});

.live() не полностью не заменили .livequery(), оно ведет себя по-другому. Если вы все еще хотите искать текущие и новые элементы, которые соответствуют селектору, .livequery() или привязка как часть обратного вызова ajax (например, в вашем успехе, например $('a.jTip', data)) - лучший маршрут.

2 голосов
/ 19 апреля 2010

Ну, это потому, что вы не настраиваете его до первого события. Другими словами, вы обрабатываете событие (очевидно) и настраиваете средство в обработчике. Это конкретное событие не будет вызывать код подсказки.

Вместо этого вы можете подумать о том, чтобы убедиться, что ваш код, который динамически добавляет контент, всегда вызывает настройку «cluetip» напрямую, или исследовать плагин «LiveQuery», чтобы выполнить «автоматическую» работу при изменениях DOM. Лично я бы выбрал первый подход, но многие люди, очевидно, используют LiveQuery с хорошими результатами.

1 голос
/ 19 апреля 2010

Потому что подсказка не инициализируется до первого клика.

Попытка:

    $("a.jTip").live("mousedown", function(event){
        $('a.jTip').cluetip({
            attribute: 'href',
            cluetipClass: 'jtip',
            arrows: true,
            activation: 'click',
            ajaxCache: false,
            dropShadow: true,
            sticky: true,
            mouseOutClose: false,
            closePosition: 'title'
        })

        event.preventDefault();
    });

Хотя cluetip будет инициализироваться несколько раз, как насчет:

    $("a.jTip").live("mousedown", function(event){
        var self = $(this);

        if (!self.data('cluetip-initd')) {
          self.cluetip({
              attribute: 'href',
              cluetipClass: 'jtip',
              arrows: true,
              activation: 'click',
              ajaxCache: false,
              dropShadow: true,
              sticky: true,
              mouseOutClose: false,
              closePosition: 'title'
          }).data('cluetip-initd', true);
        };

        event.preventDefault();
    });
0 голосов
/ 19 апреля 2010

Функция cluetip изменяет элемент, чтобы дать ему поведение всплывающей подсказки. Ваш код выполняет эту модификацию только тогда, когда пользователь нажимает на элемент. Вы хотите, чтобы это произошло, когда элемент загружен , а не когда нажал .

Похоже, у вас сложилось впечатление, что функция cluetip на самом деле вызывает всплывающую подсказку, и поэтому вам необходимо включить ее в обработчик click элемента. Это не тот случай. Функция устанавливает элемент как всплывающую подсказку, и она сама обрабатывает клик / наведение мыши.

0 голосов
/ 19 апреля 2010

Вы привязываете подсказку к событию click. Вот причина, по которой он привязан к подсказке после клипа. Удалите клик из размещенного кода, и он должен работать нормально.

...