以下是工作脚本。
<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>
/////////////////////////////////////////
现在,在快速告诉我之前,如果它正在发挥作用,那该怎么了?&#34;我还有更多的类要添加,所以我试图摆脱冗余。我知道如何将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)之前,我并不是很苛刻。 to $ this.each(function(){proper?
我是jQuery的新手,我想通过在这里提问来学习。说我首先要学习基础知识并不是很有建设性。如果你没有帮助那么好,但所有这些批评是什么?
答案 0 :(得分: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
,在像这样的事件监听器的回调内部,它将引用被点击的实际DOM元素。你可以把这个DOM元素用$( this )
包装起来,它基本上给你一个包含被点击元素的jQuery对象。
答案 1 :(得分:3)
我想澄清一般情况下$this = $(this);
的使用以及您对它的使用。
使用$(this)
与使用this
将$()
包装到jQuery对象中是一回事。基本上,如果this
与元素span.test
相同,那么$(this)
相当于将$("span#test")
带到您正在查看的“索引”处(我使用松散地“索引”这个词。
现在,这在性能方面意味着什么?这意味着每次使用$(this)
时,您都会使用this
并从中创建一个对象。这样做通常比最初查找$(this)
并将其设置为变量(例如$this
)的成本高得多。 然而,(这里来了!)在您的情况下,每次声明它时,您只使用$(this)
一次。由于程序必须进行一次$(this)
(因为它必须找到它以将其设置为变量或立即使用),所以在您的情况下会更好不要使用$this
而是跳过变量的创建和使用(这实际上会使你的情况更加昂贵),而是直接使用$(this)
。
但是,通常情况下,使用$this
是正确的。为了理智,当我编码时,我最初总是使用$this
,并在完成后删除它,如果有必要的话。