jQuery $(“#elementID”)。点击干扰其他元素

时间:2011-11-19 19:31:11

标签: jquery jquery-selectors webforms

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

场景:当我检查“Polozka 1”,然后选择“Pulena”并取消选中“Polozka 1”时,一切正常。但是,在完成上述过程后,我查看“Polozka 2”时,突然出现“Polozka 1盒”。 “Polozka 1 Box”的启示有限于检查“Polozka 1”,而不是“Polozka 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 个答案:

答案 0 :(得分:1)

你最好做类似的事情,然后你不必为每个复选框重复所有的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.

答案 1 :(得分:0)

使用nette.toggle

导致错误

例如代码

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

    nette.toggle("pulena1Box", visible);

仅检查选择列表的值,而不检查封闭容器是否可见。

由于整个函数都针对所有辅助项运行 - 如果选中它们正在检查的项目,每次表单发生变化时都会显示它们。