Элементы jQuery selectable() обновляют значения

По сути, я пытаюсь обновить атрибут value скрытого поля ввода, содержащегося в выбранном элементе, когда пользовательский интерфейс selectable() перестает работать.

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

Пример HTML:

<ul id="selector">
    <li class="networkicon shr-digg" name="shr-digg">
        <div></div>
        <label>Digg</label>
        <input type="hidden" value="" name="bookmark[]" />
    </li>
    <li class="networkicon shr-reddit" name="shr-reddit">
        <div></div>
        <label>Reddit</label>
        <input type="hidden" value="" name="bookmark[]" />
    </li>
    <li class="networkicon shr-newsvine" name="shr-newsvine">
        <div></div>
        <label>Newsvine</label>
        <input type="hidden" value="" name="bookmark[]" />
    </li>
</ul>

Пример скрипта:

$(function() {
    $("#selector").selectable({ 
        filter: 'li',
        selected: function(event, ui) {
            $(".ui-selected").each(function() {
                $(this).children('input').val($(this).attr('name'));
            });
        },
        unselected: function(event, ui) {
            $(".ui-selected").each(function() {
                $(this).children('input').val('');
            });
        }
    });
});

2 ответа

Решение
$(this).children('input').attr("value", $(this).attr('name'));
...
$(this).children('input').attr("value", '');

Это решает это?

http://api.jquery.com/val/:

Описание: Получить текущее значение первого элемента в наборе соответствующих элементов.

Ваш .each неверный синтаксис, вы, кажется, перепутали синтаксис с $.each, Так должно быть:

$(".ui-selected").each(function() {
    $(this).children('input').val($(this).attr('name'));
});
Другие вопросы по тегам