我正在尝试将自定义属性传递给脚本。如果我这样传递:
$('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>
有关正在发生的事情的任何想法?
答案 0 :(得分:2)
将this
传递给cluetip将意味着全局窗口对象,而不是当前元素。要获取当前元素,请将其放在each
语句中并逐个初始化每个cluetip:
$('a.load-local-image').each(function () {
var element = $(this);
element.cluetip({
local:true,
leftOffset: element.attr("leftpos")
});
});