首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS/jQuery原型问题,可能的范围问题

JS/jQuery原型问题,可能的范围问题
EN

Stack Overflow用户
提问于 2013-08-20 15:19:11
回答 1查看 30关注 0票数 0

谢谢你的阅读。我有一个jQuery函数,我想要原型。该函数只需将隐藏/显示函数绑定到复选框。每个复选框对应于要隐藏的不同元素。我一直在进行控制台日志记录,并且正在创建对象;控制台上没有出现其他错误。这一职能起着以下作用:

代码语言:javascript
运行
复制
$("input[name='fcrBox']").bind('change', function(){
    if( $(this).is(':checked')){
        $("#result").show();
    } else {
        $("#result").hide();
    }
});

但这并不意味着:

代码语言:javascript
运行
复制
function HideShow(elem, affected) {
this.elem = elem;
this.affected = affected;
}

var fcrBox = new HideShow('input[name="fcrBox"]', '#result');
var sc = new HideShow('input[name="sc"]', '#MQSresult');

console.log(fcrBox);
console.log(sc);

HideShow.prototype.binder = function(elem, affected){
    $(elem).bind('change', function(){
        if( $(this).is(':checked')){
            $(affected).show();
        } else {
        $(affected).hide();
        }
    });
}

fcrBox.binder();
sc.binder();

谢谢!如有任何意见,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-20 15:24:16

您使用两个参数定义了binder (elemaffected),但是在调用该方法时不传递任何值。

如果要访问传递给构造函数并分配给对象的值,则必须显式地访问这些值。这些值不是神奇地传递给binder的。

代码语言:javascript
运行
复制
function HideShow(elem, affected) {
    this.elem = elem; // <-----------------------------------------------|
    this.affected = affected;                                         // |
}                                                                     // |
                                                                      // |
var fcrBox = new HideShow('input[name="fcrBox"]', '#result');         // |
var sc = new HideShow('input[name="sc"]', '#MQSresult');              // |
                                                                      // |
console.log(fcrBox);                                                  // |
console.log(sc);                                                      // |
                                                                      // |
HideShow.prototype.binder = function(){                               // |
    var self = this; // reference to the instance; this is the same as --|
    $(self.elem).bind('change', function(){
        // In the event handler, `this` refers to the DOM element, not the
        // `HideShow` instance. But we can access the instance via `self`.
        if( $(this).is(':checked')){ // shorter: this.checked
            $(self.affected).show();
        } else {
            $(self.affected).hide();
        }
    });
}

fcrBox.binder();
sc.binder();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18338858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档