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 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 に答える