jQuery $ ("# elementID"). клик мешает другим элементам - PullRequest
0 голосов
/ 19 ноября 2011

Htmlshot: http://fallenhero.mysteria.cz/Leetleaflet.htm

Сценарий: Когда я проверяю «Polozka 1», затем выбираю «Pulena» и снимаю флажок «Polozka 1», все работает хорошо. Но когда после выполнения вышеупомянутого процесса я проверяю «Polozka 2», внезапно появляется «окно Polozka 1». Выражение «Коробка Полозка 1» ограничивается проверкой «Полозка 1», а не «Полозка 2».

Кто-нибудь может объяснить это странное поведение?

Код обработчиков событий:

  $('#frmletakForm-polozka1').on("click", function(){
     var pulena1Box = $("#pulena1Box");
     var radioPulena1 = $("#frmletakForm-typpolozky1-1");
     if(!$(this).is(":checked") && radioPulena1.is(":checked")) {
      pulena1Box.toggle();
     }
   });
  $('#frmletakForm-polozka2').on("click", function(){
     var pulena2Box = $("#pulena2Box");
     var radioPulena2 = $("#frmletakForm-typpolozky2-1");
     if(!$(this).is(":checked") && radioPulena2.is(":checked")) {
      pulena2Box.toggle();
     }
   });

Заранее благодарю за помощь.

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

Вам лучше сделать что-то подобное, тогда вам не нужно будет повторять все числа 1,2,3,4 для каждого флажка, и у вас будет меньше кода.

$('[id^="frmletakForm-polozka"]').on("click", function(){
    var num = this.id.replace(/[^0-9]/g, "");
    var pulenaBox = $("#pulena" + num + "Box");
    var radioPulena = $("#frmletakForm-typpolozky" + num + "-1");
    if(!$(this).is(":checked") && radioPulena.is(":checked")) {
        pulenaBox.toggle();
    }
});

Я также получаю эти ошибкисо своей страницы:

Uncaught TypeError: Cannot read property 'id' of undefined Leetleaflet.htm:1446
Uncaught TypeError: Cannot read property 'id' of undefined saved_resource.htm:735
5Unable to post message to http://googleads.g.doubleclick.net. Recipient has origin http://fallenhero.mysteria.cz.
0 голосов
/ 19 ноября 2011

Ошибка вызвана использованием nette.toggle

Например код

    visible = true; val = nette.getValue(form["typpolozky1"]); res = (val=="p"); visible = visible && res;

    nette.toggle("pulena1Box", visible);

Проверяет только значение списка выбора, а не только если видимый контейнер видим.

Так как вся эта функция запускается для всех вспомогательных элементов - они будут отображаться каждый раз, когда в форме происходит изменение, если выбран проверяемый элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...