Как я могу получить элемент, родственный в JQuery, в функции?

0

Я пытаюсь установить элемент с тем же значением, что и его родной брат в JQuery.

У меня есть таблица с несколькими полями, и когда я нажимаю кнопку "Изменить", я хочу скопировать значение метки в соседнее поле ввода:

<table style="width:90%">
  <tr>
    <td>Start</td>
    <td>
       <span ID="lblSprintStart" class="staticField">01/01/2001</span>
       <input class="editableField" id="sprintStart" />
    </td>
   </tr>
   <tr>
     <td>End</td>
     <td>
       <span ID="lblSprintEnd" class="staticField">02/02/2002</span>
       <input class="editableField" id="sprintEnd" />
     </td>
    </tr>
 </table>
<button id="editButton">Edit</button>

Я могу сделать это, нацеливая каждый отдельный элемент по ID:

$(function () {
 $("#editButton")
  .click(function (event) {
   event.preventDefault();
   editMode();
 }); 
});

function editMode() {     
  $("#sprintStart").val($("#sprintStart").siblings(".staticField").html());
}

Но я хочу сделать это по классу, чтобы все поля были обновлены. Если я изменю функцию, чтобы использовать селектор $ (this) и делать это по классу, он не работает:

function editMode() {     
   $(".editableField").val($(this).siblings(".staticField").html());
}

http://jsfiddle.net/QQLvX/1/

  • 0
    jsfiddle.net/QQLvX/2
  • 0
    Вы не передавая this к editMode() функции, поэтому второй вариант editMode() , который пытается использовать this не работает , как this сбрасывается при каждом вызове функции. Я бы предложил передать начальную точку в качестве аргумента editMode(where) и использовать его.
Теги:

2 ответа

2
Лучший ответ

Вы можете использовать .val(function (index, value))

Функция, возвращающая значение для установки. это текущий элемент. Получает индексную позицию элемента в наборе и старое значение в качестве аргументов.

Код

$(".editableField").val(function(){
    return $(this).siblings(".staticField").html();
});

DEMO

1

Используйте .each()

$('.editableField').each(function(){
    $(this).val($(this).siblings(".staticField").html());
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню