如何将javascript转换添加到jquery扩展文本?

时间:2017-05-23 20:06:00

标签: javascript jquery text

我遇到了为我发现的折叠text-jquery插件创建转换的问题。 Unfortunatley我几乎不了解javascript。在底部,我添加了“&&(this).show('fast');”但它不起作用。希望你能提供帮助。

$(document).ready(function () {
  var maxheight=16;
  var showText="Weiterlesen";
  var hideText="Zusammenklappen";

  $('.expand').each(function () {
    var text = $(this);
    if (text.height() > maxheight){
        text.css({ 'overflow':'hidden','height': maxheight + 'px' });

        var link = $('<p class="weiter" id="noselect"><a>' + showText + '</a></p>');
        var linkDiv = $('<div></div>');
        linkDiv.append(link);
        $(this).after(linkDiv);

        link.click(function (event) {
          event.preventDefault();
          if (text.height() > maxheight) {
              $(this).html('<a>' + showText + '</p>');
              text.css('height', maxheight + 'px')
              &&(this).show('fast');
          } else {
              $(this).html('<a>' + hideText + '</p>');
              text.css('height', 'auto')
              &&(this).show('fast');
          }
        });
    }       
  });

});

2 个答案:

答案 0 :(得分:0)

尝试将其更改为此

 $(this).html('<a>' + hideText + '</p>');
 text.css('height', 'auto');
 $(this).show('fast');

这是使用正确的JQuery语法,它是否有效取决于“this”是什么。

答案 1 :(得分:0)

(this).show();

不会工作。这是一个 HTML元素,它没有 show 属性。你想要jquerys对象属性。

jQuery(this)//get the jquery object of that html el
.show();//call the function on that

$只是jQuery的缩写。所以:

$(this).show();

注意这个是链接,但你想显示文本(它已经是一个jquery对象):

text.show();

关于&amp;&amp; (AND运算符):

false && alert("nope");
true && alert("yes");
a() && b(); //b is just called if a() is truthy => can create bugs in your case

在这里使用此运算符不是必需的/有用的。但是,您可以使用逗号运算符,但通常只使用两个语句...

但是,如果你说得对,它不是 show 所必需的,而是添加转换。这可以用css完成:

.expand{
 transition:all 2s ease;
}

请注意,这对高度不起作用,但对于最大高度,可以设置高度:自动并将最大高度从0px更改为500%...