Jquery не скрывает DIV с переменной

Создание меню JQUERY на основе HOVER. Когда пользователь наводит курсор на ID TYPO, он извлекает номер ID TYPO и передает его в ID CAT. Поэтому, если я наведу DIV ID = TYPO2, он должен отобразить DIV ID = CAT2. Это отлично работает, за исключением того, что я хочу скрыть CAT, когда мышь уходит, и это не сработает, если я снова не объявлю и не повторю переменную catId в HOVER OUT. Есть ли другой более эффективный способ для этого?

заранее спасибо

КОД :

<script> 
$(document).ready(function() {  
$("#cat1, #cat2, #cat3").hide();

$("#typo1, #typo2, #typo3").hover(function(){
var catId = $(this).attr('id');
catId = catId.substring(4,5);
$("#cat"+catId).show("fast")
},
function(){
var catId = $(this).attr('id');
catId = catId.substring(4,5);
$("#cat"+catId).hide("fast")
});
 }); 
</script>
    <div id="container">
    <div id="typo">
        <div id="typo1" class="typo">Typo1</div>
        <div id="typo2" class="typo">Typo2</div>
        <div id="typo3" class="typo">Typo3</div>
    </div>
    <div class="clear"></div>
    <div id="cat">
        <div id="cat1">CAT1</div>
        <div id="cat2">CAT2</div>
        <div id="cat3">CAT3</div>
    </div>
</div>

person Lionel RC    schedule 28.07.2011    source источник
comment
Всегда ли существует соотношение 1:1 между typo и cat div?   -  person David says reinstate Monica    schedule 28.07.2011


Ответы (1)


Если вы используете классы и атрибуты данных, все становится намного проще:

<script> 
    $(document).ready(function() {  
        $(".cat").hide();

        $(".typo").hover(function(){
            var catId = $(this).data('id');
            $(".cat[data-id='"+catId+"']").show("fast")
        },
        function(){
            var catId = $(this).data('id');
            $(".cat[data-id='"+catId+"']").hide("fast")
        });
    });
</script>


<div id="container">
    <div id="typo">
        <div data-id="1" class="typo">Typo1</div>
        <div data-id="2" class="typo">Typo2</div>
        <div data-id="3" class="typo">Typo3</div>
    </div>
    <div class="clear"></div>
    <div id="cat">
        <div data-id="1" class="cat">CAT1</div>
        <div data-id="2" class="cat">CAT2</div>
        <div data-id="3" class="cat">CAT3</div>
    </div>
</div>

Теперь вы также можете полностью избавиться от идентификаторов (если они не нужны).

person betamax    schedule 28.07.2011