Я пытаюсь передать пользовательский атрибут скрипту. Если я пройду так:
$('a.load-local-image').cluetip( {
local:true,
leftOffset: $("#par-1").attr("leftpos")
);
он отлично работает. Однако мне нужно передать атрибут текущего элемента, а не только пар-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) в качестве параметра, все работает нормально. К сожалению, единственный способ передать текущий элемент - $ (это), если у кого-то нет идеи, как я могу получить его в противном случае.
Вот разметка:
<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>
Любые идеи о том, что происходит?
передача this
cluetip будет означать глобальный объект окна, а не текущий элемент. Чтобы получить текущий элемент, поместите его внутри each
оператора и инициализируйте каждый cluetip один за другим:
$('a.load-local-image').each(function () {
var element = $(this);
element.cluetip({
local:true,
leftOffset: element.attr("leftpos")
});
});