Jquery .children()没有按预期工作

时间:2012-07-10 13:39:43

标签: javascript jquery forms captcha

我正在尝试为jQuery创建一个基本的验证码模块。我有一个不错的开始,但由于某种原因.children()似乎没有工作。在此处查看:http://jsfiddle.net/pTbeW/ 我目前有这个:

$(this).children('.captchain-start').hide();
$(this).children('.captchain-show').show();

如果我将其更改为

$('.captchain-start').hide();
$('.captchain-show').show();

它完美无缺。但是这个解决方案并不理想,因为它不允许这个验证码的两个实例位于同一页面上。我怀疑它与查询设置的html有关,但我不确定如何。我远不是一个javascript和jQuery专家,但这似乎是一件相对容易的事情。我错过了什么?看着它这么长时间我是否有疲惫的眼睛?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

因为'.captchain-*'元素不是子元素,而是兄弟元素。请尝试以下方法:

 $(this).nextAll('.captchain-start').hide();
 $(this).nextAll('.captchain-show').show();

答案 1 :(得分:0)

this

在您的点击事件中引用被点击的元素,该元素是类“captchain-start”的元素。所以你不必扫描孩子,你可以使用:

$(this)

用于实际点击的元素或元素选择器

代替。

答案 2 :(得分:0)

您应该使用$(this).nextAll()而不是$(this).children(),因为要隐藏和显示的元素不是元素的子元素,而是兄弟元素。

请参阅http://api.jquery.com/nextAll/