2012-03-13 7 views
0

Я пытаюсь установить флажок, когда я нажимаю не только флажок, но и контейнер, в котором он находится. Проблема, с которой я столкнулся, заключается в том, что когда я проверил флажок , он выстрелил дважды, потому что он также нажал на контейнер. Я придумал следующее решение, которое, кажется, работает нормально, но у меня есть ощущение, что есть более простой способ сделать это, и я ищу, чтобы научиться действительно, почему короткий и компактный javascript, поэтому любые советы были бы полезными :)javascript checkbox контейнеры - есть ли более простой способ написать это

http://jsfiddle.net/masedesign/8q5TQ/

ответ

2
$(function(){ 
    $('td.cell input').click(function(e){ 
     e.stopPropagation(); 
    }); 

    $('td.cell').click(function(){ 
     $(this).find('input').click(); 
    }); 
});​ 

e.stopPropagation() метод предотвращает событие от барботирования.

0

просто для удовольствия, я пытался добиться того же эффекта без JavaScript: если вы заинтересованы в чистом CSS решения рабочего только на новом браузере (он опирается на :checked pseudoclasses) посмотреть на этой скрипке: http://jsfiddle.net/g6Sx7/2/ (но если вы» повторно интересно, я могу улучшить его с помощью JS запасного варианта для старых IE)

Редактировать: скрипка с JS FALLBACK: http://jsfiddle.net/g6Sx7/7/ этого код должен работать нормально и на IE6, но здесь проблема заключается в поддержке CSS (соседний оператор родственного + не поддерживается в IE6): весь эффект там не работает, но в любом случае у вас не может быть тень в этом браузере ... поэтому я думаю, что это не большая проблема.

+0

Это интересно .. смотреть на поддержку вплоть до IE6. Они будут отображаться примерно в тысячах пользователей в секунду, поэтому они должны быть сплошными камнями :) – stewart715

+0

см. Мое обновление ... – fcalderan

0

Если вы не выполняете какую-либо другую задачу, если флажок установлен, то есть js, который вы написали, просто для того, чтобы сделать окно нажатым, тогда я бы предложил использовать подход CSS, а не JS.

вот рабочий пример http://jsfiddle.net/8q5TQ/6/

Примечание: это работает в IE7/8/9 FF (последний установлен в моей машине) и Chrome (последний установлен в моей машине)

Update: (после прочтения ур комментарий) У меня нет IE 6 (извините), но пробовал в режиме quirk и работает нормально. Надеюсь, что это поможет :)

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