2

我正在尝试为 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 专家,但这似乎是一件相对容易的事情。我错过了什么?看了这么久是不是眼睛都累了?任何帮助,将不胜感激。

4

3 回答 3

4

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

 $(this).nextAll('.captchain-start').hide();
 $(this).nextAll('.captchain-show').show();
于 2012-07-10T13:43:36.313 回答
0

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

http://api.jquery.com/nextAll/

于 2012-07-10T13:48:35.097 回答
0
this

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

$(this)

对于实际单击的元素或元素选择器

反而。

于 2012-07-10T13:45:52.460 回答