如何更好地编写这个jQuery脚本?

Mat*_*hew 0 variables jquery href

以下是工作脚本.

<script type="text/javascript">
window.lang = new jquery_lang_js();
$(document).ready(function() {  
    window.lang.run();
 $(".jp").click(function (e) {
 e.preventDefault();      
    var $this = $(this);        
    var id = $this.attr('href');
    window.lang.change('jp');
});

 $(".en").click(function (e) {
 e.preventDefault();      
    var $this = $(this);        
    var id = $this.attr('href');
    window.lang.change('en');
});
});

</script>

<a href="#" class="en">Switch to English</a>
<a href="#" class="jp">Switch to Japanese</a>
Run Code Online (Sandbox Code Playgroud)

/////////////////////////////////////////

现在,在快速告诉我"如果它工作有什么问题?"之前 我还有更多的类要添加,所以我试图摆脱冗余.我知道如何将href与相同的函数组合在一起,但是在这里,每个类都有可变函数,我无法自己解决这个问题.

这是我到目前为止所尝试的.

<script type="text/javascript">
window.lang = new jquery_lang_js();
$(document).ready(function() {  
    window.lang.run();
  $this.each(function(){ 
 $("a").click(function (e) {
 e.preventDefault();      
  // var $this = $(this);       
    var id = $this.attr('href');
    window.lang.change('jp');
    window.lang.change('en');
});
});
});

</script>
Run Code Online (Sandbox Code Playgroud)

这不起作用.

并且在评论我之前应该首先学习jQuery的基础知识之前是不是有点苛刻,因为我不能替换var $ this = $(this); 到$ this.each(function(){正确吗?

我是jQuery的新手,我想通过在这里提问来学习.说我首先应该学习基础知识并不是很有建设性.如果你没有帮助那么好,但所有这些批评是什么?

jcr*_*898 5

我喜欢在这种场景中使用数据属性......

var lang = new jquery_lang_js();
$(function() {  
    lang.run();

    $(".lang").click(function (e) {
        var ln = $( this ).data( "lang" );

        if ( ln ) { 
            lang.change( ln );
        }

        e.preventDefault();
    });
});


<a href="#" class="lang" data-lang="en">Switch to English</a>
<a href="#" class="lang" data-lang="jp">Switch to Japanese</a>
Run Code Online (Sandbox Code Playgroud)

另外,this在这样的事件监听器的回调内部,它将引用被点击的实际DOM元素.您可以使用该DOM元素并将其包装$( this ),它基本上为您提供了一个包含被点击元素的jQuery对象.