Генерация уникального идентификатора для каждого блока в шаблонах JQuery - PullRequest
1 голос
/ 28 февраля 2011

Я генерирую набор тегов DIV, используя jQuery tempalting (http://api.jquery.com/jquery.tmpl/) для данных json, которые я получаю с помощью ajax.

Я хочу назначить уникальные идентификаторы динамически генерируемым элементам div для дальнейших действий над ними.

я пробовал что-то вроде

var i = 0;
$( "#myTemplate" ).tmpl( data ).attr('id',++i).appendTo( "#container" ); 

но значение i никогда не менялось. он назначил id = 0 для всех тегов div.

Теперь я заработал, выполнив .each () и установив id, увеличив «i» на все соответствующие теги div, которым назначен общий класс, но я хотел сделать это за один раз.

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 05 мая 2011

Я бы пошел другим путем - сгенерировать идентификатор прямо в шаблоне.Скажем, ваш шаблон:

<script id="divTemplate" type="text/html">
    <div id='${getNextId()'}></div>
    <div id='${getNextId()'}></div>
</script>

<script type="text/javascript">
    var id = 1;
    function getNextId()
    {
        return ++id;
    }
</script>

Этот метод будет вызываться для каждого div, генерируя новый идентификатор на месте.

1 голос
/ 28 февраля 2011
var d = new Date();
var i = d.getTime();

Я думаю, что это может быть лучшим вариантом, так как его inc миллисекунды

ИЛИ

$.each('/selector goes here/',function (i,n){
    $( "#myTemplate" ).tmpl( data ).attr('id',i).appendTo( "#container" ); 
});
0 голосов
/ 28 февраля 2011

Аттр не вызывается для каждого элемента в коллекции.

Скорее, atts использует предоставленные значения, циклически изменяющие коллекцию, поэтому я не буду увеличиваться, как вы ожидаете.

0 голосов
/ 28 февраля 2011

Вы не можете сделать это за один раз в примере, который вы разместили.Поскольку ваш метод будет вызываться только один раз, его значение будет увеличиваться только один раз..each будет путь

...