javascript - jQuery change text of all next elements -
i next specific class elements , change text of them. number of entry because i've made ajax request delete record in datatabse , don't want reload page.
first actual entry number know text (or entry number) should replaced (for loop)
$entryheadcontent = $this.closest('.entry').find('.entry-head').text(); $entryid = parseint($entryheadcontent.split('|')[0].replace(/ /g,''));
then go through next entry-heads change actual entry number (decrease number 1).
alert($this.nextall('.entry-head').length); // 0 $this.nextall('.entry-head').each(function(index){ alert($this.nextall('.entry-head').length); (i = entryid; <= $this.nextall('.entry-head').length; i++) { index.text().replace(i, (i -1)) alert('index: ' + index + ' | '); } });
but somehow code don't seems executed don't it. why? $this form (test). i'm still in ajax request (in .done part of ajax request.
this entry html(tpl) file, 1 entry:
<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 sure want delete entry?');" name="delete"> <input type="hidden" value="{$entry.id}" name="entryid"> </div> </form> </div> </div>
your code:
$this.nextall('.entry-head').each(function(index){ alert($this.nextall('.entry-head').length); (i = entryid; <= $this.nextall('.entry-head').length; i++) { index.text().replace(i, (i -1)) alert('index: ' + index + ' | '); } });
doesn't seem weird you index.text();
. seeing index number , not jquery object. .each() comes second parameter in callback. function(index, value){}
$this.nextall('.entry-head').each(function(index, value){ alert($this.nextall('.entry-head').length); (i = entryid; <= $this.nextall('.entry-head').length; i++) { $(value).text().replace(i, (i -1)) alert('actual index: ' + index + ' | '); } });
i think work better?
update:
i made demo partially working. before continue, tell me if i'm on same wavelength you.
update:
bugged --> demo2
fixed --> 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; }); // 0 $entries.each(function (index, value) { var id = $entryid + index + 1; $(value).text($(value).text().replace(id, (id-1))); console.log('index: ' + index + ' | ' + $entryid); }); });
Comments
Post a Comment