nfm*_*nfm 4 javascript jquery this
这是一个用作事件处理程序的函数,它使用this:
function validate() {
if (this.val() == '') {
return false;
}
}
$(':input').change(validate);
Run Code Online (Sandbox Code Playgroud)
这是为了获取参数而重写的相同函数,因此我可以显式调用它:
function validate(field) {
if ($(field).val() == '') {
return false;
}
}
validate($('#customer_name'));
Run Code Online (Sandbox Code Playgroud)
我怎么可以重写我的validate功能,使之适合用作两个事件处理程序,并作为一个独立的功能给我打电话?
Joh*_*ica 10
有多种方法可以做到这一点.一种是使用第二个将字段作为参数并使用闭包设置事件处理程序:
function validate(field) {
if ($(field).val() == '') {
return false;
}
}
// Use anonymous function to pass "this" to validate.
$(':input').change(function() { validate(this); });
// Unchanged.
validate($('#customer_name'));
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用第一个表单并使用apply()通过重写来调用它this:
function validate() {
if ($(this).val() == '') {
return false;
}
}
// Unchanged.
$(':input').change(validate);
// Use `$(...)` as "this" when calling validate.
validate.apply($('#customer_name'));
Run Code Online (Sandbox Code Playgroud)
使用回退thisif if field不作为参数给出.
function validate(field) {
return $(field || this).val() != '';
}
$(':input').change(validate); // using this context
validate($('#someInput')); // using a parameter
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |