jQuery 更改所有下一个元素的文本

jQuery change text of all next elements

我想获取所有下一个特定的 class 元素并更改它们的文本。特别是条目的编号,因为我已经发出 ajax 请求删除数据库中的记录并且我不想重新加载页面。

首先我得到实际的条目号来知道应该替换哪个文本(或条目号)(for 循环)

$entryHeadContent = $this.closest('.entry').find('.entry-head').text();
$entryID = parseInt($entryHeadContent.split('|')[0].replace(/ /g,''));

然后我想通过所有下一个 entry-heads 来更改实际条目号(将数字减 1)。

alert($this.nextAll('.entry-head').length); // Is 0

$this.nextAll('.entry-head').each(function(index){
    alert($this.nextAll('.entry-head').length);
    for (i = entryID; i <= $this.nextAll('.entry-head').length; i++) { 
        index.text().replace(i, (i -1)) 
        alert('Index: ' + index + ' | ');
    }
});

但不知何故,代码似乎没有被执行,但我不明白。为什么? $这是表格(测试)。我仍在 ajax 请求中(在 ajax 请求的 .done 部分。

这是条目 html(tpl) 文件,其中一个条目:

<div class="entry">
    <div class="entry-head">
        #{$entryNumber} | 
        Name: {$entry.name}
        ....
    </div>
    <div class="entry-content">
        {$entry.message}
        <form action="index.php?site=entry" class="test" method="post">
            <div class="entry-options">
                <input type="submit" value="Edit" name="edit">
                <input type="submit" value="Delete" onclick="return confirm('Are you sure you want to delete this entry?');" name="delete">

                 <input type="hidden" value="{$entry.id}" name="entryID">
            </div>
        </form>
    </div>
</div>

您的代码:

$this.nextAll('.entry-head').each(function(index){
    alert($this.nextAll('.entry-head').length);
    for (i = entryID; i <= $this.nextAll('.entry-head').length; i++) { 
        index.text().replace(i, (i -1)) 
        alert('Index: ' + index + ' | ');
    }
});

你这样做 index.text(); 是不是觉得很奇怪。看到索引只是一个数字而不是 jquery 对象。 .each() 在回调中还带有第二个参数。 function(index, value){}

$this.nextAll('.entry-head').each(function(index, value){
    alert($this.nextAll('.entry-head').length);
    for (i = entryID; i <= $this.nextAll('.entry-head').length; i++) { 
        $(value).text().replace(i, (i -1)) 
        alert('Actual Index: ' + index + ' | ');
    }
});

我认为这样会更好?

更新:

我做了一个 demo 部分工作。在我继续之前,请告诉我我是否与你处于同一波长。

更新:

有问题 --> demo2

固定 --> Demo3

   $('.test').on('submit', function (e) {
    e.preventDefault();

    var $this = $(this);
    var $this2 = $this.closest('.entry').find('.entry-head');
    var $entryID = parseInt($this2.text().split('|')[0].replace(/ /g,''));
    alert($entryID);
    var $entries = $('.entry-head').not($this2).filter(function(){
        return parseInt($(this).text().split('|')[0].replace(/ /g, '')) > $entryID;
    }); // Is 0

    $entries.each(function (index, value) {
            var id = $entryID + index + 1;
            $(value).text($(value).text().replace(id, (id-1)));
            console.log('Index: ' + index + ' | ' + $entryID);
    });
});