0

下面是工作脚本。

<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>

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

现在,在快速告诉我“如果它起作用了,那有什么问题?” 我还有几个课程要添加,所以我试图摆脱冗余。我知道如何将 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>

这是行不通的。

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

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

4

2 回答 2

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>

此外,this在这样的事件侦听器的回调中,about 将引用被单击的实际 DOM 元素。您可以获取该 DOM 元素并将其包装起来$( this ),它基本上为您提供了一个包含单击元素的 jQuery 对象。

于 2013-04-11T18:46:43.173 回答
3

我想澄清一些关于$this = $(this);一般使用的事情,以及你对它的使用。

Using$(this)this使用$(). 本质上, ifthis与 element 相同span.test,则$(this)相当于$("span#test")在您正在查看的“索引”处获取(我松散地使用“索引”一词)。

现在,这在性能方面意味着什么?这意味着每次使用时,$(this)您都在从中获取this和创建对象。这样做通常比最初查找$(this)并将其设置为变量(例如$this. 但是$(this),(它来了!)在您的情况下,每次声明它时,您只使用一次。由于程序$(this)无论如何都必须执行一次(因为它必须找到它以将其设置为变量或立即使用),在您的情况下,最好不要使用$this,而是跳过创建和使用变量(这实际上会使您的情况更加昂贵),而是$(this)直接使用 , 。

但是,通常情况下,您应该使用$this. 为了理智起见,当我编码时,我总是使用$this, 最初,并在我完成后删除它,如果有必要的话。

于 2013-04-11T18:47:49.607 回答