为什么这个jQuery不起作用?

时间:2012-06-26 06:37:50

标签: jquery function

我无法获得一些额外的jQuery。

我已经将它缩小到原始脚本中的以下两行代码,当删除时允许我的新jQuery工作,显然我需要这些才能让原始脚本运行。

var J = jQuery.noConflict();
var $ = function (x) {return document.getElementById(x);}

我试图添加的新代码是:

$(function(){

// Contact form - animates fading labels

$formItems = $("input:text, textarea");

$formItems
    // fires after the page has loaded
    // if the field has already some value the label becomes invisible
    .each(function(){
        if ($(this).val() !== '') {
            $(this).prev().css({
                opacity: '0'
            });
        };
    })
    // fires on focus
    // if a focused field has no value label fades away
    .focus(function(){ 
        if ($(this).val() == '') {
            $(this).prev().stop().animate({
                opacity: '0'
            }, 200);
        }
    })
    // fires when the input field is no longer focused
    // labels fade in if there is no input in input fields
    .blur(function(){
        if ($(this).val() == '') {
            $(this).prev().stop().animate({
                opacity: '1'
            }, 200);
        }
    }) 

});

1 个答案:

答案 0 :(得分:2)

(function($) {
$(function(){

// Contact form - animates fading labels

$formItems = $("input:text, textarea");

$formItems
    // fires after the page has loaded
    // if the field has already some value the label becomes invisible
    .each(function(){
        if ($(this).val() !== '') {
            $(this).prev().css({
                opacity: '0'
            });
        };
    })
    // fires on focus
    // if a focused field has no value label fades away
    .focus(function(){ 
        if ($(this).val() == '') {
            $(this).prev().stop().animate({
                opacity: '0'
            }, 200);
        }
    })
    // fires when the input field is no longer focused
    // labels fade in if there is no input in input fields
    .blur(function(){
        if ($(this).val() == '') {
            $(this).prev().stop().animate({
                opacity: '1'
            }, 200);
        }
    }) 

});
})(jQuery);

您的脚本会覆盖$,因此您无法再使用它来引用jQuery。使用此匿名函数,您再次获得参数$并将jQuery传递给它。因此,在您的匿名函数中,您可以再次使用$来引用jQuery。

希望这有帮助