Javascript 如何改进jQuery代码
我有下面的语法。我想知道这一部分:Javascript 如何改进jQuery代码,javascript,jquery,Javascript,Jquery,我有下面的语法。我想知道这一部分:$($(this).parent().sibbines('div')[0])是否可以通过直接访问jQuery对象而无需使用$()来更优雅地编写再次 我使用了.parent() $('textarea').click(function(){ $($(this).parent().siblings('div')[0]).html('<span>140</span>'); $($(this).parent().sibling
$($(this).parent().sibbines('div')[0])
是否可以通过直接访问jQuery对象而无需使用$()来更优雅地编写代码>再次
我使用了.parent()
$('textarea').click(function(){
$($(this).parent().siblings('div')[0]).html('<span>140</span>');
$($(this).parent().siblings('div')[1]).html('<span>Reply</span>');
});
<div class="post_area2">
<div class="wrap_area2 left">
<textarea></textarea>
</div>
<div class="word_c left"></div>
<div class="submit left"></div>
</div>
$('textarea')。单击(函数(){
$($(this.parent().simbines('div')[0]).html('140');
$($(this.parent().simbines('div')[1]).html('Reply');
});
您可以使用.eq()
方法
$('textarea').click(function(){
$(this).parent().siblings('div')
.eq(0).html('<span>140</span>').end()
.eq(1).html('<span>Reply</span>');
});
$('textarea')。单击(函数(){
$(this.parent()同级('div'))
.eq(0).html('140').end()
.eq(1).html(‘回复’);
});
您可以使用.eq()
方法
$('textarea').click(function(){
$(this).parent().siblings('div')
.eq(0).html('<span>140</span>').end()
.eq(1).html('<span>Reply</span>');
});
$('textarea')。单击(函数(){
$(this.parent()同级('div'))
.eq(0).html('140').end()
.eq(1).html(‘回复’);
});
我会这样重新编写:
$('textarea').click(function(){
var divContainer = $(this).parent().siblings('div');
divContainer[0].innerHTML = '<span>140</span>';
divContainer[1].innerHTML = '<span>Reply</span>';
});
$('textarea')。单击(函数(){
var divContainer=$(this.parent().simbines('div');
divContainer[0]。innerHTML='140';
divContainer[1]。innerHTML='Reply';
});
您可以使用本机属性innerHTML
来设置DOM元素的内容,这相当于使用.html()
减去调用jQuery对象的要求
此外,这取决于您的编码风格是否喜欢进行链接,因为使用jQuery很容易做到这一点,但当行变长时可能很难阅读。我将重新编写它:
$('textarea').click(function(){
var divContainer = $(this).parent().siblings('div');
divContainer[0].innerHTML = '<span>140</span>';
divContainer[1].innerHTML = '<span>Reply</span>';
});
$('textarea')。单击(函数(){
var divContainer=$(this.parent().simbines('div');
divContainer[0]。innerHTML='140';
divContainer[1]。innerHTML='Reply';
});
您可以使用本机属性innerHTML
来设置DOM元素的内容,这相当于使用.html()
减去调用jQuery对象的要求
此外,这还取决于您的编码风格是否喜欢进行链接,因为使用jQuery很容易做到这一点,但当行变长时可能很难阅读。可能是这样的
$('textarea').click(function () {
var parentSiblings = $(this).parent().siblings('div');
$(parentSiblings[0]).html('<span>140</span>');
$(parentSiblings[1]).html('<span>Reply</span>');
});
$('textarea')。单击(函数(){
var parentsides=$(this.parent().sides('div');
$(parentsides[0]).html('140');
$(parentsides[1]).html('Reply');
});
或
$('textarea')。单击(函数(){
var parentsides=$($(this.parent().sides('div'));
parentsides.eq(0.html('140');
parentsides.eq(1).html('Reply');
});
其他人可能会认为使用香草javascript更优雅
function empty(element) {
"use strict";
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
}
}
function addEvent(nodeList, type, callBack) {
"use strict";
var length = nodeList.length,
i = 0;
while (i < length) {
nodeList[i].addEventListener(type, callBack, false);
i += 1;
}
}
addEvent(document.getElementsByTagName("textarea"), "click", function (evt) {
"use strict";
var divContainer = evt.target.parentNode.parentNode.getElementsByTagName("div"),
span;
empty(divContainer[1]);
span = document.createElement("span");
span.textContent = "140";
divContainer[1].appendChild(span);
empty(divContainer[2]);
span = document.createElement("span");
span.textContent = "Reply";
divContainer[2].appendChild(span);
});
函数为空(元素){
“严格使用”;
while(element.hasChildNodes()){
element.removeChild(element.lastChild);
}
}
函数addEvent(节点列表、类型、回调){
“严格使用”;
变量长度=节点列表长度,
i=0;
while(i
这些和其他可在
我想这取决于你如何定义更优雅。有时可读性更重要,可能不包括ant第三方库和使用普通javascript。可能是这样
$('textarea').click(function () {
var parentSiblings = $(this).parent().siblings('div');
$(parentSiblings[0]).html('<span>140</span>');
$(parentSiblings[1]).html('<span>Reply</span>');
});
$('textarea')。单击(函数(){
var parentsides=$(this.parent().sides('div');
$(parentsides[0]).html('140');
$(parentsides[1]).html('Reply');
});
或
$('textarea')。单击(函数(){
var parentsides=$($(this.parent().sides('div'));
parentsides.eq(0.html('140');
parentsides.eq(1).html('Reply');
});
其他人可能会认为使用香草javascript更优雅
function empty(element) {
"use strict";
while (element.hasChildNodes()) {
element.removeChild(element.lastChild);
}
}
function addEvent(nodeList, type, callBack) {
"use strict";
var length = nodeList.length,
i = 0;
while (i < length) {
nodeList[i].addEventListener(type, callBack, false);
i += 1;
}
}
addEvent(document.getElementsByTagName("textarea"), "click", function (evt) {
"use strict";
var divContainer = evt.target.parentNode.parentNode.getElementsByTagName("div"),
span;
empty(divContainer[1]);
span = document.createElement("span");
span.textContent = "140";
divContainer[1].appendChild(span);
empty(divContainer[2]);
span = document.createElement("span");
span.textContent = "Reply";
divContainer[2].appendChild(span);
});
函数为空(元素){
“严格使用”;
while(element.hasChildNodes()){
element.removeChild(element.lastChild);
}
}
函数addEvent(节点列表、类型、回调){
“严格使用”;
变量长度=节点列表长度,
i=0;
while(i
这些和其他可在
我想这取决于你如何定义更优雅。有时可读性更重要,可能不包括ant第三方库和使用普通javascript。试试看
$('textarea').click(function(){
$(this).parent().next().html('<span>140</span>')
.next().html('<span>Reply</span>');
});
$('textarea')。单击(函数(){
$(this.parent().next().html('140'))
.next().html('Reply');
});
试试看
$('textarea').click(function(){
$(this).parent().next().html('<span>140</span>')
.next().html('<span>Reply</span>');
});
$('textarea')。单击(函数(){
$(this.parent().next().html('140'))
.next().html('Reply');
});
您应该给另一个div
s额外的类来表示它们的含义
$('textarea').click(function(){
$(this).parents('form').children('.hide-until-using-form').show();
});
这将创建一个高度可重用的函数,它不依赖于涉及的同级数、按钮的文本(Post?Edit?)等。您应该为其他div
提供额外的类来表示它们的含义
$('textarea').click(function(){
$(this).parents('form').children('.hide-until-using-form').show();
});
这创造