2014-02-09 4 views
0

Я начинаю в jQuery. im попытайтесь создать подсказку. У меня есть что-то вроде протекающего код:Как выбрать дочерний элемент в каждом элементе с помощью jQuery?

<div class="view-port"> 
    <div class="item"> 
     <a href="#" class="item-link"><img src="product"></a> 
     <div class="tooltip">some description</div> 
    </div> 
    <div class="item"> 
     <a href="#" class="item-link"><img src="product"></a> 
     <div class="tooltip">some description</div> 
    </div> 
    <div class="item"> 
     <a href="#" class="item-link"><img src="product"></a> 
     <div class="tooltip">some description</div> 
    </div> 
    <div class="item"> 
     <a href="#" class="item-link"><img src="product"></a> 
     <div class="tooltip">some description</div> 
    </div> 
</div> 

я хочу показать .tooltip DIV в каждом элементе .item, когда мышь ввести каждый .item элемент. я написал протекающий код, чтобы сделать это:

$('.view-port').on('mouseenter', '.item', function(e){    
    $(' .tooltip').show(); 
}); 

но когда я перемещать мышь по каждому пункту, все .tooltip показано на рисунке.

как я могу исправить это ..?!

TNX

+1

'$ ('. tooltip')' выбирает все экземпляры '$ ('. tooltip')' таким образом у вас есть выбрать *** соответствующий *** '$ ('. tooltip')' в вопросе, это традиционно выбирается '$ (this)', который привязывается к текущему элементу. – MackieeE

ответ

3

Вы должны попробовать это (.find() будет искать элемент в текущий элемент, выбранный с помощью $(this)):

$('.view-port').on('mouseenter', '.item', function(e){    
    $(this).find('.tooltip').show(); 
}); 

или это:

$('.view-port').on('mouseenter', '.item', function(e){    
    $('.tooltip', this).show() 
}); 
+1

$ ('. Tooltip', this) .show() работает также, немного сокращенная версия – Bryan

+0

Да, я тоже об этом подумал и отредактировал, потому что другое решение уже было объяснено. – Codel

2

this внутри обработчика событий относится к текущему item элемента, на который вошли мыши, так что используйте this вместе с .find()

$('.view-port').on('mouseenter', '.item', function(e){    
    $(this).find('.tooltip').show(); 
}); 
+0

@downvoter я пропустил что-нибудь –

4

Вы можете использовать .find() или .children() relativly до $ (это)

$('.view-port').on('mouseenter', '.item', function(e){    
    $(this).find('.tooltip').show(); 
}); 

или

$('.view-port').on('mouseenter', '.item', function(e){    
    $(this).children('.tooltip').show(); 
}); 

Где $ (это) = $ ('. item') relativly to $ ('. view-port')

Смежные вопросы