我的应用中有一个div,每次保存主题选项面板时都会显示。
标记是......
<form method="post">
<?php
if ( $_REQUEST['saved']) { ?>
<div id="message" class="updated fade"><p>Sweet! The settings were saved :)</p></div>
<script type="text/javascript"> $('#message').delay(3000).fadeOut(3000);</script>
<?php }?>
这具有显示div(绝对定位以覆盖界面)的效果。我也使用jQuery在3秒后淡出屏幕消息。
这很好,但是,当我向我的另一个jQuery链添加一些脚本时(参见下面注释掉的块),消息div只有在出现jPicker弹出窗口时才可见。如果我删除那些代码(jPicker调用),我的消息div行为正常,但我很快就将jPicker添加到链中,消息div出现故障(字面意思:)。
$(function()
{
$("#carousel").jCarouselLite
(
{
btnNext: ".next",
btnPrev: ".prev",
visible: 6,
speed: 700
}
);
$('#carousel').show();
$('#myTheme').change
(
function()
{
var myImage = $('#myTheme :selected').text();
$('.selectedImage img').attr('src','../wp-content/themes/myTheme/styles/'+myImage+'/screenshot.jpg');
}
);
$('#carousel ul li').click
(
function(e)
{
var myOption = $(this).children('img').attr('title');
$("#myTheme option[value='"+myOption+"']").attr('selected', 'selected');
$("#myTheme").css('backgroundColor', '#A9A9A9').animate({backgroundColor: "#ffffff"}, 'slow');
}
);
$('#carousel ul li').hover
(
function(e)
{
var img_src = $(this).children('img').attr('src');
$('.selectedImage img').attr('src',img_src);
}
,function()
{
$('.selectedImage img').attr('src', '<?php echo $selectedThumb; ?>');
}
);
/*
$('#myTheme_sidebar_color').jPicker
(
{},
function(color)
{
$(this).val(color.get_Hex());
},
function(color)
{
$(this).val(color.get_Hex());
}
);
*/
});
答案 0 :(得分:1)
这是jPicker插件开发人员Chris Tillman。我不确定你为什么遇到这个特殊问题,它可能与jPicker插件无关,但我确实注意到你的代码中有一个问题。
我正在查看你已经注释掉的回调函数,我正在试图弄清楚$(this)应该表示什么。 “this”对象将引用触发回调的javascript上下文,并且可能不是您期望的对象。如果要确定引用所需的对象,则应在jPicker调用之外声明它的实例,并在回调中引用该变量。
我相信在大多数情况下,你的例子中使用的上下文要么是jPicker对象本身,要么是容器,甚至可能是整个DOM窗口本身,这意味着你要设置你的val值不想成为。如果要检查上下文,请指定一个等于$(this)的全局变量,然后使用Firebug查看它是什么。