使用选定的索引</div>隐藏<div>

时间:2014-07-04 14:21:01

标签: javascript jquery html dom

我正在修复页面上的jQuery代码片段。该页面的基本思想是列出用户并显示用户的委托(在<div id="show_hidden_delegate">中,如果用户的<select id="delegate_form">的值设置为1. HTML代码由我们的应用程序生成,所以我无法分辨页面上会出现多少用户。但提到的<select>始终跟着被操纵的<div>

所以我试图找到id为delegate_form的select值,在.each()循环中检查并显示/隐藏div。贝娄是部分工作的代码。

$(document).ready(function() { 
  $('*[id*=delegate_form]').each(function(index){
      if($(this).val() == '1'){
        $("#show_hidden_delegate").show();
        alert("Index = " + index);
      } else {
        $("#show_hidden_delegate").hide();
       alert("Index = " + index);               
      }
  });
});

在我的测试输入中,第一个选择的值是1,秒是2(不能有任何不同的值)。但执行后,div首先会消失。当我试着 使用$("#show_hidden_delegate").eq(index).hide()什么也没发生。我在哪里弄错了?

仅供参考:第一个警报显示“Index = 0”,第二个“Index = 1”

2 个答案:

答案 0 :(得分:0)

如果我理解,只需:

$(document).ready(function() { 
  $('*[id*=delegate_form]').each(function(index){
      if($(this).val() == '1'){
        $(this).next().show();
      } else {
        $(this).next().hide();              
      }
  });
});

答案 1 :(得分:0)

好的,我已经找到了解决方法。问题是,我只能编辑生成HTML的XML文件。我在XML中看到的很多东西都不会显示在页面上。这与脚本无关,它取决于XML文件中的其他内容。

但这是解决方法。

$(document).ready(function() {
    $('*[id*=delegate_flag]').each(function(index){
        if($(this).val() == '1'){
        $('*[id*=show_hidden_delegate').eq(index).show();
        //alert("Index = " + index);
    } else {
        $('*[id*=show_hidden_delegate').eq(index).hide();
        //alert("Index = " + index);                
    }
});
$('*[id*=delegate_form]').each(function(index){
    $(this).change(function(){
        if($(this).val() == '1'){
            $('*[id*=show_hidden_delegate').eq(index).show();
            //alert("Index = " + index);
        } else {
            $('*[id*=show_hidden_delegate').eq(index).hide();
            //alert("Index = " + index);                
        }
    });
});
});

只有当我使用正则表达式找到要隐藏的div时,才能正确显示/隐藏它。我必须检查两次,因为一个页面包含组合以选择值id="delegate_form",其他页面包含隐藏值id="delegate_flage"且没有组合。