2013-07-24 2 views
0

Как правильно использовать «ЭТО», чтобы выбрать идентификатор внутри «li»?jquery выберите этот идентификатор внутри li

<li class="item"> 
    <div id="sale_container">text</div> 
</li> 

$("li.item").hover(function() { 
     $("#sale_container").fadeIn(400); 
    }) 
    $("li.item").mouseleave(function() { 
     $("#sale_container").fadeOut(400); 
    }) 

Как он влияет на все ли с классом «item». Итак, я хочу, чтобы это повлияло на каждую ли, когда мышь закончилась.

Этот пример не работает

$("li.item").hover(function() { 
    $(this)("#sale_container").fadeIn(400); 
}) 
$("li.item").mouseleave(function() { 
    $(this)("#sale_container").fadeOut(400); 
}) 
+0

Вы не можете иметь несколько тегов с тем же ID, также это может быть сделано с чистым CSS. http://stackoverflow.com/questions/9250619/fade-in-out-with-css3 – asawyer

+0

Я думаю, что в IE будет проблема. Как бы это ни выглядело – Andrei

+0

Измените идентификатор на класс и селектор из ответа @ David на '$ (this) .find (". Sale_container "). FadeIn (400);' и у вас будет 0 вопросов. – asawyer

ответ

0

Поскольку идентификаторы уникальны, вам нужно всего лишь использовать $('#sale_container') без каких-либо других классификаторов.

Предположим, вы не используете идентификатор, то вы будете использовать:

$(this).find(...).fadeIn(400); «...» является селектором, что вы ищете внутри, который может быть ("div") или (".myClassname") т.д.

+0

id не обязательно уникальны. – gbtimmon

+1

Когда они не уникальны, кроме как при плохой кодировке? –

+0

Я никогда не говорил, что это была не плохая практика ... просто, что нет в спецификациях, она упоминает идентификаторы уникальны ... Я думаю, что 100% браузеров поддерживают не уникальные идентификаторы, и я видел, что некоторые очень хорошо написанные сайты используют неединственные id ... – gbtimmon

0

Заменить:

$(this)("#sale_container").fadeIn(400); 

С:

$(this).find("#sale_container").fadeIn(400); 

Или даже:

$(this).children().fadeIn(400); // will fade any element inside .item 

Обратите внимание, что вы можете иметь только один уникальный идентификатор на одной странице.

+0

Спасибо! Это решило мою проблему – Andrei

+0

@Andrei не стесняйтесь принять этот ответ, если он решил ваш вопрос – David

0

Вы можете использовать этот код:

$("li.item").hover(function() { 
    $(this).find("#sale_container").fadeIn(400); 
}); 
0

Используйте функцию поиска, чтобы найти элемент, содержащийся внутри родительского элемента (это).

$("li.item").hover(function() { 
    $(this).find("#sale_container").fadeIn(400); 
}) 
0
$("li.item").hover(function() { 
     $("#sale_container",$(this)).fadeIn(400); 
    }, function() { 
     $("#sale_container",$(this)).fadeOut(400); 
    }); 

FIDDLE Demo

+1

'$ (this)' isnt required, просто 'this' будет делать :) – krishgopinath

+0

Спасибо за ваш ценный вклад. Можете объяснить разницу между' this 'и' $ (this) ' –

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