Is there a preferred way of formatting jQuery chains to make them more readable?

前端 未结 4 687
粉色の甜心
粉色の甜心 2020-12-13 20:40

Given this following sample code which clones a table row, sets some properties and then appends it to a table:

$(\"#FundTable\").append(
    objButton.paren         


        
相关标签:
4条回答
  • 2020-12-13 20:54

    I indent as if it were bracketed:

    $("#FundTable")
        .append(objButton.parents("tr")
            .clone()
            .find(".RowTitle")
                .text("Row " + nAddCount)
            .end()
            .find(".FundManagerSelect")
                .attr("id", "FundManager" + nAddCount)
                .change(function() {
                    ChangeFundRow(); // you were missing a semicolon here, btw
                })
            .end()
            .find(".FundNameSelect")
                .attr("id", "FundName" + nAddCount)
            .end()
        )
    ;
    
    0 讨论(0)
  • 2020-12-13 21:04

    I would refactor to this. I find more than 3 chained methods uneasy on the eye

           var $clonedRow =  objButton.parents("tr").clone();
    
           $clonedRow.find(".RowTitle") 
                     .text("Row " + nAddCount);
    
           $clonedRow.find(".FundManagerSelect")
                     .attr("id", "FundManager" + nAddCount)
                     .change( ChangeFundRow );
    
           $clonedRow.find(".FundNameSelect")
                     .attr("id", "FundName" + nAddCount);
    
           $clonedRow.appendTo("#FundTable");
    
    0 讨论(0)
  • 2020-12-13 21:09

    How about:

    $("#FundTable").append(
        objButton.parents("tr").clone()
            .find(".RowTitle").text("Row " + nAddCount)
            .end()
            .find(".FundManagerSelect").attr("id", "FundManager" + nAddCount)
            .change(function() { 
                ChangeFundRow() 
            })
            .end()
            .find(".FundNameSelect").attr("id", "FundName" + nAddCount)
            .end()
    );
    

    I find that chaining, when used in moderation, can lead to better readability.

    0 讨论(0)
  • 2020-12-13 21:18

    Don't chain so much.

    var newContent = objButton.parents("tr").clone();
    
    newContent.find(".RowTitle").text("Row " + nAddCount)
    newContent.find(".FundManagerSelect").attr("id", "FundManager" + nAddCount)
        .change(function() { ChangeFundRow() });
    newContent.find(".FundNameSelect").attr("id", "FundName" + nAddCount);
    
    $("#FundTable").append(newContent);
    

    Less chaining, but it seems easier to read imo.

    0 讨论(0)
提交回复
热议问题