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);
});
});
我想获取所有下一个特定的 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);
});
});