2015-04-22 3 views
0

Я хотел бы получить все последующие специальные элементы класса и изменить их текст. В частности, номер записи, потому что я сделал запрос ajax для удаления записи в datatabse, и я не хочу перезагружать страницу.jQuery изменить текст всех следующих элементов

Сначала я получить фактический номер записи, чтобы знать, какой текст (или запись номер) следует заменить (цикл)

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

Тогда я хотел бы пройти через все последующие въездные головки, чтобы изменить фактические номер записи (уменьшите число на 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 (в .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> 
+0

у вас есть '$ this.nextAll ('вход головки') каждый (function (index) {'in' $ (document.ready()) 'right? – renakre

+0

Похоже, что это можно сделать только в CSS, см. например: https://css-tricks.com/almanac/properties/c/counter -increment/ –

+0

Да, это в $ (document.ready()) – Procos

ответ

2

Ваш код:

$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 + ' | '); 
    } 
}); 

Я бы подумал, что это будет работать лучше?

Update:

Я сделал demo частично работает. Прежде чем продолжить, скажите, если я на той же длине волны, что и вы.

Обновление:.

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; 
    }); // 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); 
    }); 
}); 
+1

ничто не кажется «странным», когда вы учитесь программировать, +1 на ответ, хотя –

+0

Да, небольшая ошибка, спасибо за этот намек, но этот код все еще не выполняется, потому что ничего не меняется, и я не получаю любая ошибка. – Procos

+1

Я вижу, что вы добавили, что $ this.nextAll ('. Entry-head'). Length возвращает 0. Можете ли вы добавить к своему сообщению, что такое ваш $ this? @Procos, спасибо. – rottenoats

Смежные вопросы