JS双鼠标悬停

时间:2013-11-08 19:47:08

标签: javascript jquery this mouseover

我正在尝试将自定义属性传递给脚本。如果我这样传递:

$('a.load-local-image').cluetip( {
    local:true, 
    leftOffset: $("#par-1").attr("leftpos")
);

它工作正常。但是,我需要传递当前元素的属性,而不仅仅是par-1。如果我这样试试:

$('a.load-local-image').cluetip( {
    local:true, 
    leftOffset: $(this).attr("leftpos")
);

该函数将参数视为未传递。所以,我尝试在mouseenter()中包装函数:

$('a.load-local-image').mouseenter( {
    $(this).cluetip( {
        local:true, 
        leftOffset: $(this).attr("leftpos")
    });
});

除了我必须在cluetip脚本运行之前鼠标移过两次之外,它才能正常工作。我甚至尝试用这种方式预加载cluetip():

$('a.load-local-image').cluetip();
$('a.load-local-image').mouseenter( {
    $(this).cluetip( {
        local:true, 
        leftOffset: $(this).attr("leftpos")
    });
});

它仍然做同样的事情。我还尝试过mouseover,mouseout,mouseleave,hover以及我能想到的所有其他与鼠标相关的功能。

出于某种莫名其妙的原因,问题似乎与$(this)有关。如果我使用除$(this)之外的任何东西作为参数,一切正常。不幸的是,我传递当前元素的唯一方法是$(this),除非有人知道我怎么能得到它。

这是标记:

<div id="par-1">
    <a id="load-local" class="load-local-image featurelink" title="" href="" rel="#whatever" leftpos="220" toppos="48">
    <img src="images/image.jpg" alt="" class="featureimg"></a> 

有关正在发生的事情的任何想法?

1 个答案:

答案 0 :(得分:2)

this传递给cluetip将意味着全局窗口对象,而不是当前元素。要获取当前元素,请将其放在each语句中并逐个初始化每个cluetip:

$('a.load-local-image').each(function () {
    var element = $(this);

    element.cluetip({
        local:true, 
        leftOffset: element.attr("leftpos")
    });
});