我遇到了一个奇怪的问题,我的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()调用中对其进行硬编码时才会这样做。如果它通过,它将不会注意它。我错过了什么吗?
任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
只想发布找到的解决方案 - 但答案在评论中。基本上,传递的值是一个字符串,而不是数字。所以我在PHP文件中进行了一些转换,以确保根据类型正确传递值。