2014-09-22 3 views
0

Я использую plugin, чтобы дать моим <select> элементам изображения, загруженные jquery. Дело в том, что имена не переносятся на новый код и, следовательно, не могут отправить форму, окружающую ее. Новый код выглядит следующим образом:Jquery foreach set name attribute как значение

<div id="itemselect1" name="item1" class="dd-container"> 
    <div class="dd-select"> 
     <input class="dd-selected-value" value="Apple" type="hidden"> 
    </div> 
</div> 

<div id="itemselect2" name="item2" class="dd-container"> 
    <div class="dd-select"> 
     <input class="dd-selected-value" value="Orange" type="hidden"> 
    </div> 
</div> // the list continues 

Так что я попробовал этот подход к передаче имен через:

var list = { 
    "itemselect1": "item1", 
    "itemselect2": "item2", 
    "itemselect3": "item3", 
    "itemselect4": "item4", 
    "itemselect5": "item5", 
    "itemselect6": "item6" 
}; 
$.each(list, function(key, value) { 
    $("#"+ key).children().children("input.dd-selected-value").attr("name", value); 
}); 

Хотя это все еще не работает. Элементы <input> не имеют имен. Есть какие нибудь идеи как это починить? Благодаря!

Edit: Я добавил некоторые изменения, чтобы помочь диагностировать проблему

$.each(list, function(key, value) { 
    $("#"+ key).children().children("input.dd-selected-value").attr("name", value); 
    console.log(key); 
    console.log(value); 
    console.log($("div#"+ key).attr("name")); 
}); 

Вот что консоль говорит:

itemselect1 (index):30 
item1 (index):31 
undefined (index):32 
itemselect2 (index):30 
item2 (index):31 
undefined (index):32 

Я попытался это в конце плагина jquery, а также в тегах <script> в файле index. Похоже, это не нахождение названия. Я буду держать копать ...

+0

это выглядит хорошо для меня - http://jsfiddle.net/arunpjohny/wa01cmsn/2/ - проверьте атрибуты входного по имени действительно меняются путем проверки скрытых элементов. –

+0

Ваш ввод должен иметь атрибут имени, добавленный как указано @ArunPJohny. Вы также можете заменить этот код '$ (" # "+) .children(). Children (" input.dd-selected-value "). Attr (" name ", value);' с просто '$ (" # "+ key +" input.dd-selected-value "). attr (" name ", value);' Поскольку у вас уже есть два идентификатора, которыми вы располагаете. не нужно называть 'childer(). children()' – andrex

+0

@ArunPJohny Кажется, что там работает, я думаю, что он сталкивается с чем-то в плагине. – Kragalon

ответ

0

Попробуйте for in

for (var key in list){ 
    $("#"+ key).children().children("input.dd-selected-value").attr("name", list[key]); 
} 
+0

Нет ничего плохого в коде OP ... он должен работать нормально –

+0

OP сказал, что элемент ** input ** не имеет имени – andrex

+0

Ya, я предполагаю, что он каким-то образом вмешивается в плагин. – Kragalon