0

複数の関数でjquery noconflict設定を実行している限り、いくつかの競合が発生しているため、テストしている関数の1つに対してnoconflictをテストして問題を切り分けることにしました。

s$ を配置する場所について複数のバリエーションを試しましたが、どの構成も機能していないようです。この作業を行う唯一の方法は、変数を -> var $ のままにして、すべての従属変数をこの設定にすることですが、一意の変数を使用してこれを機能させる方法を見つける必要がありますか?

おそらく私の構文にも問題がありますか?

var s$ = jQuery.noConflict();

s$.fn.emailSpamProtection = function(className) {

return s$(this).find("." + className).each(function() {
var $email = s$(this);
var address = $email.text()
.replace(/\s*\[at\]\s*/, '@')
.replace(/\s*\[dot\]\s*/g, '.');
$email.html('<a href="mailto:' + address + '">'+ address +'</a>');
    });
};

これが私が試した修正されたスクリプトです。

jQuery.noConflict();

(function($){
$.fn.emailSpamProtection = function(className) {
 return this.find("." + className).each(function() {
        var $email = this;
        var address = $email.text()
        .replace(/\s*\[at\]\s*/, '@')
        .replace(/\s*\[dot\]\s*/g, '.');
        $email.html('<a href="mailto:' + address + '">'+ address +'</a>');
    });
};
})(jQuery);

そして、これを .html ホームページに配置しました

jQuery(function($){

    //Note, you can use $(...) because you are wrapping everything within a jQuery function
    $("body").emailSpamProtection("email");

});
4

2 に答える 2

0

noConflict 属性を正しく使用しているとは思いません。これは私がそれを使用する方法です:

//Establish jQuery noConflict mode.
jQuery.noConflict();

//Define your jQuery plugins/functions
(function($){
$.fn.emailSpamProtection = function(className) {
 return this.find("." + className).each(function() {
        var $email = this;
        var address = $email.text()
        .replace(/\s*\[at\]\s*/, '@')
        .replace(/\s*\[dot\]\s*/g, '.');
        $email.html('<a href="mailto:' + address + '">'+ address +'</a>');
    });
};
})(jQuery);


// Use jQuery with $(...)
jQuery(function($){

    //Note, you can use $(...) because you are wrapping everything within a jQuery function
    $('#myElement').emailSpamProtection();

});
于 2012-08-31T19:00:04.507 に答える
0

理解した。試行錯誤を繰り返した結果、変数を$jではなく に切り替えることで問題を解決できましたj$。これが私の最終結果です。

//JQuery Section

var $j=jQuery.noConflict();

  //Hiding other scripts that were included in this application.js file//


//email spam protection - Example Markup: <span class="email">name[at]domain[dot]com</span>
$j.fn.emailSpamProtection = function(className) {

return $j(this).find("." + className).each(function() {
var email = $j(this);
var address = email.text()
.replace(/\s*\[at\]\s*/, '@')
.replace(/\s*\[dot\]\s*/g, '.');
email.html('<a href="mailto:' + address + '">'+ address +'</a>');
    });
};

});

//Script added to the presentation page (html,php,whatever)

<script>
$j(function() {

  $j("body").emailSpamProtection("email"); 

});
</script>
于 2012-09-03T04:57:12.240 に答える