1

不知道我做错了什么。我的自定义 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 内的简单电话号码:

<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() 可能只是在错误的位置,但我已经将它移动到插件代码周围,结果相同。

4

2 回答 2

0

你需要这样声明你的功能:

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

...如果要在您当前尝试访问它时具有全局范围,请在onclick处理程序中。

也就是说,作为最佳实践,我建议提供一个对象并将其范围限定在该对象内,以防止污染全局命名空间。

干杯

于 2012-10-22T23:43:28.887 回答
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,'');

工作示例在这里

于 2012-10-22T23:58:53.657 回答