2015-12-17 3 views
5

У меня есть около 1000 изображений и текстовых полей с тем же именем класса и настраиваемым атрибутом. Названия классов - это смайлик и смайлик, соответственно. Пользовательскими атрибутами являются emo-tag и emo-ascii соответственно.Заполнение массива элементами из разных атрибутов HTML

Каждое изображение имеет своего партнера (текстовое поле) с тем же содержимым в его пользовательском атрибуте.

Пример:

emo-tag = "f-x" // for images 
emo-ascii = "f-x" // for textareas 

где х представляет собой число от 0 до 999.

Мой сценарий захватывает атрибуты изображений и то, что мне нужно без проблем. Проблема начинается, когда я пытаюсь получить значение textarea, у которого есть точный контент атрибута, такой как изображение.

Вот мой код:

$(function(){ 
var json = []; 

$('img').each(function(){ 
    var emoimg = $(this).attr("src"); 
    var emoalt = $(this).attr("alt"); 
    var emotag = $(this).attr("emo-tag"); 

    //Does not this supposed to capture the value of this specific textarea? 
    var emoascii= $('.emoticonlist').attr("emo-ascii",emotag).val(); 

     json.push({ 
      id : emotag, 
      name : emoalt, 
      img : emoimg, 
      content: emoascii  
     }); 

}); 
    var s = JSON.stringify(json); 
    $("#content").after("<div>" + s + "</div>"); 
}); 

Как я уже говорил, код работает, но текстовое поле схвачен и проталкивается в массиве только первый один и все элементы массива. Как я могу выполнить то, что хочу?

Выходной ток:

[ 
{"id":"emo-0","name":"Smiley Face","img":"images/smiley-face.png","content":":)"}, 
{"id":"emo-1","name":"Big smile","img":"images/big-smile.png","content":":)"}, 
{"id":"emo-2","name":"Sad face","img":"images/sad-face.png","content":":)"}, 
... 
... 
... 
] 

Желаемая Выход:

[ 
{"id":"emo-0","name":"Smiley Face","img":"images/smiley-face.png","content":":)"}, 
{"id":"emo-1","name":"Big smile","img":"images/big-smile.png","content":":D"}, 
{"id":"emo-2","name":"Sad face","img":"images/sad-face.png","content":":("}, 
... 
... 
... 
] 
+0

Не могли бы вы использовать 'код блока' инструмент при редактировании, чтобы дать рабочий скрипку пример? Если вы не можете заставить его работать, тогда, пожалуйста, укажите достаточно html и, чтобы мы могли сделать легкую скрипку. Спасибо –

+0

'$ ('. Emoticonlist'). Attr (" emo-ascii ", emotag)' устанавливает атрибут. Он не получает его, как вы хотите (http://api.jquery.com/attr/). – Lucas

ответ

3

Используя $('.emoticonlist').attr("emo-ascii",emotag), вы устанавливаете атрибут вместо того, чтобы элемент, где атрибут равен emotag. (http://api.jquery.com/attr/)

Возможно, попробуйте заменить линию

var emoascii= $('.emoticonlist').attr("emo-ascii",emotag).val(); 

с

var emoascii= $('.emoticonlist[emo-ascii=' + emotag +']').val(); 

(https://api.jquery.com/attribute-equals-selector/)

+0

Спасибо! Это, наконец, работает! Это было именно решение. – iVoidWarranties

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