JQuery Переключить Скрыть Показать Вопрос - PullRequest
0 голосов
/ 16 мая 2009

Какой самый эффективный способ сократить это?

$('.img').click(function(e) {
    if ($(this).attr('id') == 'myid') {
        $('#a').hide();
        $('#b').show();
    } else {
        $('#a').show();
        $('#b').hide();
    }
});

и что-то изменит в вашем ответе, если добавится еще один вариант с else if

Ответы [ 3 ]

6 голосов
/ 17 мая 2009
$('#myid').click(function() {
        $('#a,#b').toggle();
});
4 голосов
/ 16 мая 2009

Я предполагаю, что вы пытаетесь сопоставить все элементы с классом "img".

$(".img[id='myid']").click(function() {
        $('#a,#b').toggle();
});

Чтобы разрешить несколько идентификаторов

$(".img[id='myid'], .img[id='myid2']").click(function() {
        $('#a,#b').toggle();
});

Вы также можете проверить, не равен ли по id

$(".img[id!='someid']").click(function() {
        $('#a,#b').toggle();
});
0 голосов
/ 16 мая 2009

Почему вы проверяете идентификатор элемента внутри события click? Если вы хотите, чтобы этот конкретный элемент обрабатывал это событие, выберите его и привяжите к нему обработчик события.

Предполагая, что в любое время есть либо #a, либо #b, показывающее:

$('#myid').click(function(){
    $('#a').toggle();
    $('#b').toggle();
})
...