使用 "this"的 JavaScript 对象

标签 javascript jquery object hide show

我正在学习 JavaScript。 我想尝试创建一个简单的对象来隐藏/显示一些文本 block ,所以我写了 这段代码。

   var Post = {
    init: function(el){
        this.el = el;
        this.title = el.children(".title");
        this.entry = el.children(".entry");
        var that = this;
        this.title.on("click", function(){
            that.hide();
        });

    },
    hide: function(){
        this.entry.slideUp('fast');
    },
    show: function(){
        this.entry.slideDown('fast');
    }
}
$(".post").each(function(){
    Post.init($(this));
})

http://jsfiddle.net/ZVpau/

问题是,无论您单击什么标题,此代码始终只隐藏最后一篇文章。 谁能告诉我问题出在哪里?

最佳答案

您只有一个 Post 对象,并且它只包含一个元素。
为每个元素创建一个对象。为此,您可以使用构造函数

function Post(el){
    this.el = el;
    this.title = el.children(".title");
    this.entry = el.children(".entry");
    var that = this;
    this.title.on("click", function(){
        that.hide();
    });

    this.hide = function(){
        this.entry.slideUp('fast');
    };
    this.show = function(){
        this.entry.slideDown('fast');
    }
}
$(".post").each(function(){
    new Post($(this));
})

http://jsfiddle.net/ZVpau/1/

关于使用 "this"的 JavaScript 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675302/

相关文章:

javascript - 当工具栏存在时,Ext js FormPanel 不显示面板项目

javascript - MDN "Object.is"替代提案

javascript - 如何使用jquery更改数据属性的子元素

javascript - jquery 函数内部 html href 代码无法正常工作

javascript - 为什么 jquery 选择器从旧值而不是新值中选择元素

jquery - MediaElement.js - 如何设置音频的 Flash 回退?

javascript - 我不断收到 "Uncaught ReferenceError: imgArray is not defined"错误

java - 从方法创建对象(使用抽象方法)并将其添加到 "ArrayList"s

javascript - 将数组对象推送到新对象

javascript - 是什么 !! JavaScript 中的(不是 not)运算符?