jQuery很奇怪。 Div附加到链式元素标记?

时间:2010-03-21 16:15:00

标签: jquery

我的应用中有一个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()); 
    }
);
*/
});

1 个答案:

答案 0 :(得分:1)

这是jPicker插件开发人员Chris Tillman。我不确定你为什么遇到这个特殊问题,它可能与jPicker插件无关,但我确实注意到你的代码中有一个问题。

我正在查看你已经注释掉的回调函数,我正在试图弄清楚$(this)应该表示什么。 “this”对象将引用触发回调的javascript上下文,并且可能不是您期望的对象。如果要确定引用所需的对象,则应在jPicker调用之外声明它的实例,并在回调中引用该变量。

我相信在大多数情况下,你的例子中使用的上下文要么是jPicker对象本身,要么是容器,甚至可能是整个DOM窗口本身,这意味着你要设置你的val值不想成为。如果要检查上下文,请指定一个等于$(this)的全局变量,然后使用Firebug查看它是什么。

相关问题