Javascript 为什么;这";在jQuery中,插件是否未按预期工作?
“嗨 我正在尝试做一个jQuery插件,但是当我尝试获取一个元素的文本并重复它时,插件会对页面上的每个元素都执行Javascript 为什么;这";在jQuery中,插件是否未按预期工作?,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,“嗨 我正在尝试做一个jQuery插件,但是当我尝试获取一个元素的文本并重复它时,插件会对页面上的每个元素都执行 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta h
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
$.fn.codigo = function() {
this.append(this.text());
};
$(function() {
$('.esto').codigo();
});
</script>
</head>
<body>
<div class="esto">1</div>
<div class="esto">2</div>
</body>
</html>
$.fn.codigo=函数(){
this.append(this.text());
};
$(函数(){
$('.esto').codigo();
});
1.
2.
此代码将返回:
112 212
但我只想让它退回这个:
11 22
这是因为
这个引用了选择器匹配的元素集合
您希望对每个
进行并单独处理:
$.fn.codigo = function() {
this.each(function() {
var $t = $(this);
$t.text($t.text()+$t.text());
}):
return this;
};
这是因为这个引用了选择器匹配的元素集合
您希望对每个
进行并单独处理:
$.fn.codigo = function() {
this.each(function() {
var $t = $(this);
$t.text($t.text()+$t.text());
}):
return this;
};
像这样写你的插件
(function($) {
$.fn.codigo = function() {
return this.each(function(idx, elem) {
$(elem).text(function(idx, str) {
return str + str;
});
});
};
})(jQuery);
查看元素的-fn
receivesindex
,并将str
设置为现有文本。函数的返回值设置新文本
上面是您的标准jQuery插件样板。然而,如果这是插件的真正目标,您可以将其简化一点
jQuery.fn.codigo = function() {
return this.text(function(idx, str) { return str + str; });
};
这将非常快,因为它将函数调用减少了相当多(与这里提供的其他解决方案相比)。像这样编写插件
(function($) {
$.fn.codigo = function() {
return this.each(function(idx, elem) {
$(elem).text(function(idx, str) {
return str + str;
});
});
};
})(jQuery);
查看元素的-fn
receivesindex
,并将str
设置为现有文本。函数的返回值设置新文本
上面是您的标准jQuery插件样板。然而,如果这是插件的真正目标,您可以将其简化一点
jQuery.fn.codigo = function() {
return this.text(function(idx, str) { return str + str; });
};
这将是相当快的,因为它将函数调用减少了相当多(与这里提供的其他解决方案相比)。插件在应用它的元素列表中调用一次,而不是每个元素调用一次。因此,这是一个包含所有元素的jQuery对象
循环遍历元素并将代码应用于每个元素,为了制作一个好的插件,还需要返回this
,以便链接:
$.fn.codigo = function() {
return this.each(function(i, e){
$(e).append($(e).text());
})
};
插件会被调用一次,其中包含应用它的元素列表,而不是每个元素调用一次。因此,这是一个包含所有元素的jQuery对象
循环遍历元素并将代码应用于每个元素,为了制作一个好的插件,还需要返回this
,以便链接:
$.fn.codigo = function() {
return this.each(function(i, e){
$(e).append($(e).text());
})
};
这个插件中的
是一个包含多个元素的jquery集合。我认为你想要的是:
$.fn.codigo = function() {
this.each(function(){
$(this).append($(this).text());
});
return this;
}
这个插件中的
是一个包含多个元素的jquery集合。我认为你想要的是:
$.fn.codigo = function() {
this.each(function(){
$(this).append($(this).text());
});
return this;
}
请尝试这一个,因为这是一个非常简单和好的概念。。。。。。。。
请您至少检查一次这一概念。。。。。。。。。。
$.fn.codigo=函数(){
this.append(this.text());
};
$(函数(){
$('.esto')。每个(函数(){
$(this.append($(this.text());
});
});
1.
2.
请尝试这一个,因为这是一个非常简单和好的概念。。。。。。。。
请您至少检查一次这一概念。。。。。。。。。。
$.fn.codigo=函数(){
this.append(this.text());
};
$(函数(){
$('.esto')。每个(函数(){
$(this.append($(this.text());
});
});
1.
2.
不要忘记返回可链接性的jQuery集合。不要忘记返回可链接性的jQuery集合。@Bergi感谢您的编辑。我很荣幸你能如此仔细地看我的一个答案^。^@Bergi谢谢你的编辑。我很荣幸你能如此仔细地看我的一个答案^^