JS двойное наведение мыши

0

Я пытаюсь передать пользовательский атрибут скрипту. Если я пройду так:

$('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
mouseover

1 ответ

2

передача this cluetip будет означать глобальный объект окна, а не текущий элемент. Чтобы получить текущий элемент, поместите его внутри each оператора и инициализируйте каждый cluetip один за другим:

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

    element.cluetip({
        local:true, 
        leftOffset: element.attr("leftpos")
    });
});
  • 0
    Да!! Это сделал это! Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню