Jquery 缺少一行中的最后一个按钮

Jquery 缺少一行中的最后一个按钮,jquery,loops,Jquery,Loops,我有一个jquery循环,其中显示按钮a-Z,但它所做的是在一行中显示7个按钮。所以它应该如下所示: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 但问题是,此循环导致每行中的最后一个按钮丢失。所以按钮G、N和U不见了。我想知道为什么它们会丢失,以及如何修复下面的代码以显示这些按钮以及其他按钮 var i = 1; $('#optionAndAnswer .answers').each(

我有一个jquery循环,其中显示按钮a-Z,但它所做的是在一行中显示7个按钮。所以它应该如下所示:

    A B C D E F G
    H I J K L M N
    O P Q R S T U
    V W X Y Z
但问题是,此循环导致每行中的最后一个按钮丢失。所以按钮G、N和U不见了。我想知道为什么它们会丢失,以及如何修复下面的代码以显示这些按钮以及其他按钮

    var i = 1;

    $('#optionAndAnswer .answers').each(function() {
        var $this = $(this);
        var $newBtn = '';
        if($this.is(':visible')){
            $newBtn = $("<input class='answerBtnsRow answers' type='button' style='display: inline-block;' onclick='btnclick(this);' />").attr('name', $this.attr('name')).attr('value', $this.val()).attr('class', $this.attr('class'));
        }else{
            $newBtn = $("<input class='answerBtnsRow answers' type='button' style='display: none;' onclick='btnclick(this);' />").attr('name', $this.attr('name')).attr('value', $this.val()).attr('class', $this.attr('class'));
        }

                    if(i % 7 == 0){
              $answer.append($newBtn+"<tr></tr>");
            }
            else
             $answer.append($newBtn);                 
            i = i+1;
        });




PHP CODE:


<?php
    $a = range("A","Z");
?>

    <table>
        <tr>

    <?php
        $i = 1;
        foreach($a as $key => $val){
            if($i%7 == 1) echo"<tr><td>";
            echo"<input type=\"button\" onclick=\"btnclick(this);\" value=\"$val\" id=\"answer".$val."\" name=\"answer".$val."Name\" class=\"answerBtns answers answerBtnsOff\" style=\"display: inline;\">";       
            if($i%7 == 0) echo"</td></tr>";
            $i++;
        }
    ?>
        </tr>
    </table>
var i=1;
$('#optionandswer.answers')。每个(函数(){
var$this=$(this);
var$newBtn='';
如果($this.is(':visible')){
$newBtn=$(“”).attr('name',$this.attr('name')).attr('value',$this.val()).attr('class',$this.attr('class');
}否则{
$newBtn=$(“”).attr('name',$this.attr('name')).attr('value',$this.val()).attr('class',$this.attr('class');
}
如果(i%7==0){
$answer.append($newBtn+“”);
}
其他的
$answer.append($newBtn);
i=i+1;
});
PHP代码:
[忽略]

$newBtn+”
这是一个jQuery实例+字符串。 我想这就是问题所在。 在最后一个
$answer.append($(newBtn)),尝试将newBtn始终保持为字符串

[/忽略]

我只是试着建立一个单一的字符串,结果证明是笨重的

以下解决方案更接近您的初衷,但避免了尝试附加无效HTML片段的陷阱。
“”:

var$this,i=0,$row,$cell;
$('#optionandswer.answers')。每个(函数(){
$this=$(this);
如果(i%7==0){
$row=$('').appendTo($answer);
$cell=$('').appendTo($row);
}
$(“”.replace('%s',$this.is(':visible')?'inline-block':'none')).attr('name',$this.attr('name')).attr('value',$this.val()).attr('class',$this.attr('class')).appendTo($cell);
i++;
});

仅测试synatax错误

如果没有HTML,很难说。。。可能设置
var i=0
?如果我这样做,字母H、P和X将丢失如果我这样做(i%8==0)@T.J。我确实想附加一个空行,请发布您的html。或者更好的方法是创建一个JSFIDLE。我无法创建FIDLE,因为它从php代码中检索按钮,我将发布正确显示顶部按钮的php代码。您知道我应该更改为什么吗?进一步思考-字符串最终会起作用,但使用顺序appendTo()更容易,正在生成表行及其内容。我将补充上面的答案。
var $this, i=0, $row, $cell;
$('#optionAndAnswer .answers').each(function() {
    $this = $(this);
    if(i%7 == 0) {
        $row = $('<tr />').appendTo($answer);
        $cell = $('<td />').appendTo($row);
    }
    $("<input class='answerBtnsRow answers' type='button' style='display:%s;' onclick='btnclick(this);' />".replace('%s',$this.is(':visible')?'inline-block':'none')).attr('name', $this.attr('name')).attr('value', $this.val()).attr('class', $this.attr('class')).appendTo($cell);
    i++;
});