2

我不确定是什么原因造成的,但我正在使用提示提示并将其绑定到实时事件(单击或鼠标输入),但在每种情况下提示提示直到单击或悬停事件后才会触发。我正在为 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;
        });
4

5 回答 5

2

那是因为你直到第一个事件之后才设置它。换句话说,您正在处理事件(显然)并在处理程序中设置了设施。该特定事件不会触发线索提示代码。

除了这样做,您可能会考虑确保动态添加内容的代码始终直接调用“cluetip”设置,或者调查“LiveQuery”插件以在 DOM 更改时执行“自动”工作。就我个人而言,我会采用前一种方法,但显然很多人使用 LiveQuery 时效果很好。

于 2010-04-19T14:17:41.937 回答
2

您仍然可以为此使用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))是最佳途径。

于 2010-04-19T14:17:49.343 回答
1

因为在第一次单击之后才初始化提示提示。

尝试:

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

虽然线索提示将被多次初始化,那么如何:

    $("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();
    });
于 2010-04-19T14:17:06.760 回答
0

您正在绑定click事件的线索提示。这就是它在剪辑后绑定到线索提示的原因。从发布的代码中删除点击,它应该可以正常工作。

于 2010-04-19T14:16:59.753 回答
0

cluetip函数修改一个元素以赋予它工具提示行为。您的代码仅在用户单击元素时执行该修改。您希望在加载元素时发生这种情况,而不是在单击它时发生

您似乎认为该cluetip函数实际上会弹出工具提示,因此您需要将其包含在元素的click处理程序中。事实并非如此。该函数元素设置为工具提示,并自行处理单击/鼠标悬停。

于 2010-04-19T14:17:28.413 回答