jQuery自定义插件undefined js函数

时间:2012-10-22 23:37:49

标签: jquery plugins

不确定我做错了什么。我的自定义jQuery插件中有一个函数,我的浏览器告诉我它未定义。

任何人都可以看到我在里面做错了什么:

(function($){

  $.fn.myCustomPlugin = function( ) {

    return this.each(function() {

        var theValue = $(this).text().trim().replace(/ /g,'');

        // STOP if theValue return nothing
        if (theValue === null || theValue === undefined || theValue == ""){ 
            $(this).html("nothing inside the span"); 
            return true; 
        }


        function clickActions()
        {
            alert("This alert shows when clicking on the element");     
            return false;
        }


        $(this).html('<a href="javascript:void(0);" onClick="clickActions()">'+theValue+'</a>');

    }); // eof .each


  };
})(jQuery);

Html是跨越的简单电话号码:

<span class="formatme">123-8749674</span><br />
<span class="formatme">123-8749674</span><br />
<span class="formatme">123-8749674</span><br />
<span class="formatme">123-8749674</span><br />
<span class="formatme">123-8749674</span><br />

<script type="text/javascript"> 
$(document).ready(function() {
    $('.formatme').myCustomPlugin();
});
</script>

函数clickActions()可能只是在错误的位置,但我已将其移动到插件代码中,结果相同。

2 个答案:

答案 0 :(得分:0)

你需要声明你的功能:

window.clickActions = function(){
    alert("This alert shows when clicking on the element");     
    return false;
}

...如果要在onclick处理程序中尝试访问它,那么要进行全局范围设定。

那就是说我建议提供一个对象并在该对象中确定范围,以防止污染全局命名空间,这是最佳实践。

干杯

答案 1 :(得分:0)

您只需使用

即可
$(this).text(theValue).on('click', function(e){
    alert("This alert shows when clicking on the element");     
    return false;
});

也在行

之后
var theValue = $(this).text().trim().replace(/ /g,'');

应为$.trim()

var theValue = $.trim($(this).text()).replace(/ /g,'');

Working Example Here