我正在尝试绑定到change
中ASP.NET呈现为span
的{{1}}事件。显然,容器为这些控件添加了诸如asp:Label
之类的内容,但我不希望我的脚本依赖于不一定已知的标识符。
ctl00_
通过span
AjaxControlToolkit
控件更新,该控件使用ASP.NET标签的ID,根据正在验证的输入控件显示其帮助消息。
稍微调查一下,似乎我想要的是因为控件有自己的PasswordStrength
容器 - 我找到了资源here,here和here这表明我基本上可以用一个选择器查找孩子,SO答案看起来绝对有希望,所以我想出了以下几点改变:
div
不幸的是,我的努力没有成功;事件不会激发。
我在这里做错了什么?
我是否将<div id="PasswordHelpContainer" class="passwordFailureNotification">
<asp:Label runat="server" ID="PasswordHelpLabel"/>
</div>
$(document).ready(function () {
$('#PasswordHelpContainer').children('span:first').change(function () {
//
});
});
和Javascript
混合在一起?
我知道第二个问题对某些人来说可能听起来有些自相矛盾,但如果有需要,我会自由阐述。
答案 0 :(得分:2)
来自http://api.jquery.com/change/
change
事件在值更改时发送给元素。此活动仅限于<input>
元素,<textarea>
框和<select>
元素。对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点。
因此,您的活动永远不会被提升,因为标签会呈现为<span>
。
答案 1 :(得分:0)
好的,根据你的说法,jQuery不会为自己的变更触发更改事件。您自己必须trigger
关于元素的事件,或者从不同的逻辑运行事件处理程序(可能ASP.NET提供了一些东西,我不知道)。
就jQuery而言,我非常确定您所描述的内容不会触发更改事件。
此外,您应该使用“修改”标记或其他内容标记您的修改,很难找到您对该问题所做的更改。