将元素的字符串存储到变量中,通过Toggle()传递

时间:2012-06-14 19:41:15

标签: jquery

我已经开始使用包含其中标题的div框。

我希望有一个toggle()事件,当单击标题时,它会将标题字符串存储到变量中,更改该标题的HTML,并为包含parent() div的parent() div框设置动画它。

第二个功能是再次为html() div框设置动画,并将HTML更改回原始文本(将其存储为变量。)

我遇到了麻烦,我不确定我的问题在哪里。我正在使用{{1}}来“获取”原始标题的字符串,我不确定这是否正确。我也不确定是否需要更多的预防措施来传递变量或正确调用变量。

http://jsfiddle.net/94nPv/1/

请让我知道我做错了什么。非常感谢SO。

1 个答案:

答案 0 :(得分:3)

您可以使用.data()方法存储原始html http://jsfiddle.net/94nPv/3/

jQuery(document).ready(function($) {
    $('h5').toggle(function() {
        var $this = $(this);
        $this.data('originalText',$this.html());
        $this.parent('div.softwarebox').animate({ height: "700px" });
        $this.html("Close");
    }, function() {
        var $this = $(this);
        $this.parent('div.softwarebox').animate({ height: "19px" });
        $this.html($this.data('originalText'));
    });        
});​

略微优化(无需额外调用.html或.data):http://jsfiddle.net/94nPv/7/

jQuery(document).ready(function($) {
    $('h5').each(function(){
        var $this = $(this);
        $this.data('originalText',$this.html());
    });
    $('h5').click(function() {
        var $this = $(this);
        if ($this.text() === "Close") {
            $this.html($this.data('originalText'));
            $this.parent('div.softwarebox').animate({
                height: "19px"
            });
        }
        else {
            $this.text("Close");
            $this.parent('div.softwarebox').animate({
                height: "700px"
            });
        }
    });
});​