2012-06-29 30 views
0

我有一个关于jquery中的表达式的简单问题来选择一个涉及for循环的类。基本上,我有两个步骤: 1.用循环生成一些html表格。 2.使用jQuery取消隐藏它们。循环中的jquery类选择器

下面是简化的代码以 1.产生的HTML表格(I将添加循环索引以分离每个环路创建的表): 2.第二步的关键部分是取消隐藏生成的表格。我的选择器写成:method_options_1'+i+',其中我是for循环索引。

for (var i = 2; i <= 5; i++) { 
    <tr class="method_options_1'+i+'" style="display: none;"><th><label for="id_CAM_1">Chemical application Method (CAM):</label></th> 
     <td><select name="CAM_1_'+i+'" id="id_1_'+i+'"> 
     <option value="2">2-Interception based on crop canopy</option> 
     <option value="9">9-Linear foliar based on crop canop</option></select> 
     </td></tr> 

    $('.method_options_1'+i).closest('tr').show(); 
} 

但是,这个选择器不起作用,这意味着我无法显示隐藏的元素。而如果我从HTML和jquery中删除索引i,选择器就可以工作。由于我必须保留i索引,任何人都可以给我一些建议(我尝试删除最近的('tr'),但它不起作用)?

+0

那是哪里HTML从?它来自构建html的程序代码? – biziclop

+0

我将使用jquery来即时生成html。 –

回答

1

'.method_options_1'+i已经是tr,所以先尝试删除closest('tr')步:

$('.method_options_1'+i).show(); 

http://jsfiddle.net/WJDCm/

+0

感谢您的回复。我尝试删除最近的('tr'),但它不起作用 –

+0

适用于我:http://jsfiddle.net/WJDCm/3/ – biziclop

+0

感谢您的帮助。我知道你的代码应该可以工作,但不知何故,我的工作不起作用。我需要重新检查它 –

0

这是因为就如JavaScript而言,name是一个简单的字符串:method_options_1'+i'。它不评估该字符串内的任何代码。如果你想要做是正确的,做这样的事情:

HTML:

<tr class="method_options">etc</tr>

的Javascript:

$('.method_options:eq('+i+')').show();

编辑:

也许我误解。您正在使用Javascript for循环生成此代码,因此i是代码空间中的有效变量。如果是这样的话,那么你只需要取出closest(),因为它告诉jQuery沿着DOM行进并选择它找到的第一个tr。在这种情况下,这似乎不算什么。您想要处理您选择的tr,而不是您选择的父母的tr

+0

感谢您的意见 –

0

我真的不知道如何运行上面的代码...但是这样做确实工作

HTML:

​<table id='myTable'> 
</table>​​​​​​​​ 

的JavaScript:

$(function(){ 

    for (var i = 2; i <= 5; i++) { 
    $('#myTable').append('<tr class="method_options_1'+i+'" style="display: none;"><th><label for="id_CAM_1">Chemical application Method (CAM):</label></th><td><select name="CAM_1_'+i+'" id="id_1_'+i+'">  <option value="2">2-Interception based on crop canopy</option>  <option value="9">9-Linear foliar based on crop canop</option></select>  </td></tr>'); 


    $('.method_options_1'+i).closest('tr').toggle('slow'); 
    } 


}) 

Solution

+0

感谢您的帮助! –