Первое легко. Вам не нужен внешний $
звонок. .find()
уже вернет объект jQuery. Просто напишите это так
$(this).children("#element")
Что касается обнаружения, если он был наведен ранее, вам нужно было бы установить флаг где-нибудь. Это может выглядеть так:
var hoveredOver = false;
$('.port-item').hover(function(){
hoveredOver = true;
//continue event handler
}
Возможно, вам придется с этим смириться в зависимости от ваших конкретных обстоятельств. Возможно, установка флага с помощью .data()
была бы лучше, если бы вы зависали над многими вещами.
$('.port-item').hover(function(){
$(this).data('hoveredOver', true);
//continue event handler
}
РЕДАКТИРОВАТЬ Пропустил вопрос там. Третий ответ: чтобы узнать, существует ли уже объект DOM (разметка), вы ищете его и проверяете длину следующим образом:
if($(this).find('#port-item-cover').length>0)
{
//element exists
}
else
{
//element does not exist, add it
}