2012-04-27 2 views
1

У меня есть код javascript/jquery, который динамически заполняет неупорядоченный список кучей элементов списка. В элементах списка У меня есть ссылка, и я хочу, чтобы связать некоторые данные с той связью, которая генерируется следующим образом:Подключить индекс данных или массива к тегу привязки

var thing1 = { name: 'My Object' }; 
var thing2 = { name: 'My Other Object' }; 
var li = $('<li></li><br />'); 
var aSel = $('<strong>' + thing1.name + '<br /><a class="btn btn-mini btn-success addDeal" href="javascript:void(0)"><i class="icon-plus"></i>Add Deal</a>'; 
li.append(aSel); 
li.append(add); 
$('#sidebar').append(li); 
//This is in a loop so the same thing would happen with thing2, etc 

будет генерировать HTML, как так:

<div id="results"> 
    <ul id="sidebar"> 
     <li> 
      <strong>My Object</strong><br /> 
      <a class="btn btn-mini btn-success addDeal" href="javascript:void(0)"><i class="icon-plus"></i>Add Deal</a> 
     </li> 
     <li> 
      <strong>My Other Object</strong><br /> 
      <a class="btn btn-mini btn-success addDeal" href="javascript:void(0)"><i class="icon-plus"></i>Add Deal</a> 
     </li> 
    </ul> 
</div> 

Таким образом, если пользователь нажимает сначала добавьте ссылку «Сделка», я хочу работать с данными thing1 в другом месте моего сценария. Если нажимается вторая ссылка, я хочу работать с данными thing2.

Путь, к которому я иду, включает в себя массив и некоторый код, который мне не подходит. Я полагаю, что мне не хватает чего-то тривиального.

ответ

2

Вы можете использовать функцию jQuery.data, чтобы прикрепить «вещь» к каждой вашей ссылке. Сразу после var aSel = линии:

$('a', aSel).data('thing', thing1); // Select the anchor tag inside of 
            // aSel and attach thing1 to it 

Затем, когда якорь тег щелкнул, получить его с помощью: var thing = $(this).data('thing');

+0

Я возиться с вашим предложением в jsfiddle и это не похоже на работу. [Fiddle Here] (http://jsfiddle.net/BigPete/rfUNB/) – Pete

+0

Я просто хотел добавить, что [этот скрипт] (http://jsfiddle.net/BigPete/rfUNB/1/) работает. Я просто закончил работу с 'aSel.data ('thing', thing1)' и, похоже, работает по какой-то причине, несмотря на количество тегов. Мне не сразу понятно, почему это работает. – Pete

1

Вы можете использовать HTML5 Custom Data Attributes (data-*) для достижения желаемого.

Особое внимание следует обратить на использование атрибутов данных с JavaScript.

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