2011-04-08 47 views
0

我想将一个函数绑定到一个名为'click'的类的所有链接上,该类将提醒该链接的父div中'checked'的所有复选框的值。我一定不明白jQuery父功能是如何工作的,因为我期望下面的两个JS代码做同样的事情,只有第二个更灵活..但第一个(特定目标)工作,而第二个JS例子不'吨。jQuery:将一个元素的父项的选中复选框作为目标

任何指针,我做错了会很棒!

HTML:

<div id="wrapper"> 
<ul> 
    <li><input type="checkbox" name="blue" value="blue" /></li> 
    <li><input type="checkbox" name="red" value="red" /></li> 
    <li><input type="checkbox" name="green" value="green" /></li> 
</ul> 

<a href="#" class="click">Submit</a> 
</div> 

工作JS:

$('.click').click(function() { 

    var colors = []; 

    $('#wrapper :checkbox:checked').each(function(i){       

     alert($(this).val()); 

     colors[i] = $(this).val(); 

    }); 

    return false; 

}); 

不工作JS:

$('.click').click(function() { 

    var colors = []; 

    $(this).parent(':checkbox:checked').each(function(i){       

     alert($(this).val()); 

     colors[i] = $(this).val(); 

    }); 

    return false; 

}); 

回答

2

你的代码的第二块改成这样,它应该工作:

$('.click').click(function() { 

    var colors = []; 

    $(this).parent().find(':checkbox:checked').each(function(i){       

     alert($(this).val()); 

     colors[i] = $(this).val(); 

    }); 

    return false; 

}); 

父函数通过搜索祖先并查找与提供的字符串匹配的元素。如果没有提供字符串,则返回您的直接祖先。 parent()find('...')的组合应该做你想做的事情。

如果你想保证你抓住了包含div,你也可以使用.parent('div').find(':checkbox:checked')

+0

真棒,感谢Stargazer!这样可行。我会接受你的答案,一次9分钟后,我能:) – coopertrooper 2011-04-08 01:18:22

+0

@coopertrooper,总是乐于帮助:) – riwalk 2011-04-08 01:19:22

0

在第二个功能,什么你告诉jQuery是获取父那就是被选中一个复选框,但你从锚(指向jQuery对象具有被clciked锚开始)因此父母是div。

在第一种情况下,您从div开始并选中被选中的子复选框。

相关问题