如果以毫秒为单位,则忽略将速度变量传递给jQuery slideToggle()

时间:2014-12-04 13:40:10

标签: javascript jquery jquery-ui slidetoggle

我遇到了一个奇怪的问题,我的google-fu让我失望了。我正在使用WordPress插件,我将变量从设置页面传递到jQuery脚本。它完全没有通过,除了在脚本中,它完全忽略了slideToggle()中的速度值。

为了记录,我正在加载一个jQuery脚本(jQuery UI - v1.11.2):核心和效果。

这是我的剧本:

jQuery(document).ready(function($) {
  var $show_open_by_default = wp_settings.expanded;
  var $showtext = wp_settings.show;
  var $hidetext = wp_settings.hide;
  var $speed = wp_settings.toggle_down;
  var $easing = wp_settings.easing;

  if($show_open_by_default != 1) { // if setting is unchecked...
      $('.comment .children').hide(); // hide all children on load
  }

  $('.comment-list > li').each(function() {
    if( $(this).find('.children').length > 0 ) {
      $(this).find('.children').before('<div class="replylink"><span class="show">'+$showtext+'</span></div>');
    }
  });

  $('.replylink').hover(function() {       // when hovering the replylink...
    $(this).css('cursor','pointer');       // change the cursor...
  }, function() { 
    $(this).css('cursor','auto'); 
  }).click(function() {                     // and on click...
    // change the text
    $(this).text( $(this).text() == $hidetext ? $showtext : $hidetext); 

    // animate the visibility of the children
    var $nextDiv = $(this).next();
    var $visibleSiblings = $nextDiv.siblings('div:visible');

    if ($visibleSiblings.length == 0 ) {
        $visibleSiblings.slideToggle($speed, $easing);      
    } else { 
        $nextDiv.slideToggle($speed, $easing);
    }
  });
});

这一切都很好,除了最后的slideToggle()调用。如果我发出警报($ speed);就在slideToggle()调用之前,它确实提醒了正确的设置。但是,slideToggle会忽略它并恢复为默认速度。

有趣的是,如果我手动放入一个值,它就可以了。但是通过传递的值,它会忽略它。我完全被这个难过了。我已经尝试了所有我能想到的东西,让它注意这个数字,但只有在我在slideToggle()调用中对其进行硬编码时才会这样做。如果它通过,它将不会注意它。我错过了什么吗?

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

只想发布找到的解决方案 - 但答案在评论中。基本上,传递的值是一个字符串,而不是数字。所以我在PHP文件中进行了一些转换,以确保根据类型正确传递值。