Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何改进jQuery代码_Javascript_Jquery - Fatal编程技术网

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();
});
这创造