点击 div 切换动画

Toggle animation clicking in a div

我想在每次单击 div 时将一个值传递给函数参数,并在此函数中切换 jQuery 动画。我尝试了下面的代码,但没有用:

<div onclick="aboutMe(about1)"></div>
function aboutMe(x) {
    $(x).toggle(function() {
        $(x).animate({
            width: '600px'
        }, "slow");
    }, function() {
        $(x).animate({
            width: '40px'
        }, "slow");
    });​
};

我该怎么办?

您尝试使用的切换函数签名已从源中删除。要达到您的要求,您需要检查当前宽度并相应地设置新宽度。试试这个:

$(x).click(function() {
    $(this).animate({ width: $(this).width() == 40 ? '600px' : '40px' });
});​

另请注意,每次单击 div 并触发 aboutMe() 函数时都会附加事件处理程序。如果这不是预期的行为,您应该更改代码以便使用 JS 附加事件,如下所示:

<a href="#about1">About Me</a>
$('a').click(function() {
    $($(this).attr('href')).animate({ width: $(this).width() == 40 ? '600px' : '40px' });
});​

为什么不通过 Class 切换它?这不是最佳答案,但您可以考虑这个。

 var aboutMe = function(x) {
   $(x).toggleClass('short')
 };

 $(function() {
   $('#clicker').click(function() {
     aboutMe('#div1');
   });
 });
#div1 {
  height: 100px;
  width: 600px;
  background: #eee;
  text-align: center;
  transition : width 1s linear;
}

#div1.short{

   width : 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="div1">Hey</div>
<button id="clicker">Toggle</button>

如何点击 div?据我所知,它在 div 元素上不起作用...

<label onclick="aboutMe(about1)">About Me</label>

https://jsfiddle.net/4ntzpw8z/1/

这里有一个 fiddle 给你。你只需要使用不同的元素。你的功能工作正常。

根据文档还没有删除切换:

http://api.jquery.com/toggle/

在不同的主题上看到它:Whosebug

$(document).ready( function(){
$('#toggle-button').click( function() {
    var toggleWidth = $("#toggle").width() == 300 ? "200px" : "300px";
    $('#toggle').animate({ width: toggleWidth });
});

});

test fiddle