在jQuery对象上调用用户定义的函数

时间:2011-09-12 01:37:33

标签: javascript jquery colors

我希望单击它时文本的颜色会发生变化。这是我现在正在使用的代码:

$(document).ready(function() {
    $("#colorChanger p").click(function() {
        $(this).changeColor();
    });

    function changeColor() {
        $(this).css("color", "white");
    };
})

我也有这段代码on JSFiddle。我的代码出了什么问题?

5 个答案:

答案 0 :(得分:3)

更新了小提琴:http://jsfiddle.net/xME2L/5/

如果你想添加一个函数,你可以在从$()返回的任何内容上调用它,你必须使用:

$.fn.functionName = function() {}

答案 1 :(得分:0)

这是my solution。您没有正确地将对象传递给changeColor函数。我还建议在document.ready函数之外声明changeColor。

答案 2 :(得分:0)

从未将更改颜色函数分配给jquery el对象。

agmcleod解决方案的替代方案是:

$(document).ready(function(){

        $("#colorChanger p").click(function(){
           changeColor($(this));
         });

        function changeColor(el){
            el.css("color","white");
        };
});

http://jsfiddle.net/dq6yv/

答案 3 :(得分:0)

作为agmcleod's solution的替代方案,您可以通过这种方式拨打changeColor(无需更改changeColor):

changeColor.call(this);

演示更改here

答案 4 :(得分:0)

如果要将其称为$(this).changeColor();则应将changeColor定义为JQuery插件。 :

$(document).ready(function(){            
    $("#colorChanger p").click(function(){
        $(this).changeColor();
    });

    $.fn.changeColor = function() {
      this.css("color","white");
    };

})