FLX*_*FLX 17 jquery events load
如果这个问题已被提出,我很抱歉,但我找不到解决方案.
我有3个无线电元素,我想在选择更改和页面加载时检查值.
我会通过只使用on()函数来做到这一点.
我的问题是只触发了更改事件.
这是我目前的代码:
$('.user').on('load change', function(){
if($(this).val() == 'client'){
$('#user_parent').removeAttr('disabled').closest('tr').show(200);
}else{
$('#user_parent').attr('disabled', 'disabled').closest('tr').hide(200);
}
});"
Run Code Online (Sandbox Code Playgroud)
我也尝试通过准备替换负载,但它也失败了.有什么问题?单个元素的加载事件不是可用的吗?
代码放在$(document).ready(...)中,并且在发送页面时都会显示元素.
谢谢
Vog*_*612 20
load将在加载侦听元素的所有子元素时调用该事件.在你的情况下,这可能是在调用ready事件之前,因此渲染你的处理程序(在document.ready之后附加)是无用的.
供参考,请参阅JQuery api,您将在其中找到以下内容:
当load和所有子元素已完全加载时,load事件将发送到元素.此事件可以发送到与URL关联的任何元素:图像,脚本,框架,iframe和窗口对象.
这也意味着您需要一个URL,因此您可以收听加载事件.因为你没有提供进一步的代码我假设你确实有一个你可以听的URL.
这可能是最可能的原因.如果您没有与(至少一个)子元素相关联的任何URL,则不会有您可以收听的加载事件.
试试这个:
$(document).ready(function(){
checkUserVal();
$('.user').on('change', checkUserVal);
});
var checkUserVal = function(){
//do the check
if($('.user').val() == 'client'){
$('#user_parent').removeAttr('disabled').closest('tr').show(200);
}else{
$('#user_parent').attr('disabled', 'disabled').closest('tr').hide(200);
}
};
Run Code Online (Sandbox Code Playgroud)
我使代码成为提高可读性的方法;)
正如Vogel612所解释的那样,load对于大多数元素并不开火.
ready只是为了document.
您each最初可以用来运行事件处理程序.
$(document).ready(function(){
$('.user')
.each(user_handler)
.on('change', user_handler);
});
var user_handler = function(){
// this
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66275 次 |
| 最近记录: |