jQuery:找到child并绑定到event

时间:2011-03-27 12:52:13

标签: asp.net html jquery-selectors jquery

我正在尝试绑定到change中ASP.NET呈现为span的{​​{1}}事件。显然,容器为这些控件添加了诸如asp:Label之类的内容,但我不希望我的脚本依赖于不一定已知的标识符。

ctl00_通过span AjaxControlToolkit控件更新,该控件使用ASP.NET标签的ID,根据正在验证的输入控件显示其帮助消息。

稍微调查一下,似乎我想要的是因为控件有自己的PasswordStrength容器 - 我找到了资源hereherehere这表明我基本上可以用一个选择器查找孩子,SO答案看起来绝对有希望,所以我想出了以下几点改变:

div

不幸的是,我的努力没有成功;事件不会激发。

我在这里做错了什么? 我是否将<div id="PasswordHelpContainer" class="passwordFailureNotification"> <asp:Label runat="server" ID="PasswordHelpLabel"/> </div> $(document).ready(function () { $('#PasswordHelpContainer').children('span:first').change(function () { // }); }); Javascript混合在一起?

我知道第二个问题对某些人来说可能听起来有些自相矛盾,但如果有需要,我会自由阐述。

2 个答案:

答案 0 :(得分:2)

来自http://api.jquery.com/change/

change事件在值更改时发送给元素。此活动仅限于<input>元素,<textarea>框和<select>元素。对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点。

因此,您的活动永远不会被提升,因为标签会呈现为<span>

答案 1 :(得分:0)

好的,根据你的说法,jQuery不会为自己的变更触发更改事件。您自己必须trigger关于元素的事件,或者从不同的逻辑运行事件处理程序(可能ASP.NET提供了一些东西,我不知道)。

就jQuery而言,我非常确定您所描述的内容不会触发更改事件。

此外,您应该使用“修改”标记或其他内容标记您的修改,很难找到您对该问题所做的更改。