function compare(propName) {
return function(a,b) {
if (a[propName] < b[propName])
return -1;
if (a[propName] > b[propName])
return 1;
return 0;
};
}
objs.sort(compare("last_nom"));
Вы могли использовать делегация события на родительском отделении Или использовать самый близкий метод для нахождения родителя кнопки.
самый легкий из этих двух является, вероятно, самым близким.
var id = $("button").closest("div").prop("id");
1.
$(this).parent().attr("id");
2.
должно быть большое количество путей! Можно было быть должен скрыть элемент, который содержит ответ, например,
<div>
Volume = <input type="text" />
<button type="button">Check answer</button>
<span style="display: hidden">3.93e-6</span>
<div></div>
</div>
, И затем имейте подобный код jQuery к вышеупомянутому для захвата этого:
$("button").click(function ()
{
var correct = Number($(this).parent().children("span").text());
validate ($(this).siblings("input").val(),correct);
$(this).siblings("div").html(feedback);
});
принимают во внимание, что, если Вы помещаете ответ в клиентский код затем, они видят его :) Лучший способ сделать это должно проверить его серверная сторона, но для приложения с ограниченным объемом это не может быть проблемой.
Попробуйте это:
$("button").click(function () {
$(this).parents("div:first").html(...);
});
Получить идентификатор родительского отделения:
$(buttonSelector).parents('div:eq(0)').attr('id');
кроме того, можно осуществить рефакторинг код вполне немного:
$('button').click( function() {
var correct = Number($(this).attr('rel'));
validate(Number($(this).siblings('input').val()), correct);
$(this).parents('div:eq(0)').html(feedback);
});
Теперь нет никакой потребности в объяснении класса кнопки
eq (0), средства, что Вы выберете один элемент из объекта jQuery, в этом элементе случая 0, таким образом первый элемент. http://docs.jquery.com/Selectors/eq#index
$ (селектор) .siblings (siblingsSelector) выберет все одноуровневые элементы (элементы с тем же родителем), которые соответствуют $ siblingsSelector http://docs.jquery.com/Traversing/siblings#expr
(селектор) .parents (parentsSelector), выберет всех родителей элементов, подобранных селектором, которые соответствуют родительскому селектору. http://docs.jquery.com/Traversing/parents#expr
Таким образом: $ (селектор) .parents ('div:eq (0)'); будет соответствовать первому родительскому отделению элементов, подобранных селектором.
необходимо взглянуть на документы jQuery, особенно селекторы и пересечение:
JQuery имеет .parents () метод для продвижения дерева DOM, которое можно запустить там.
, Если Вы интересуетесь выполнением этого более семантический путь, я не думаю с помощью атрибута РЭЛА на кнопке, лучший способ семантически определить, "это - ответ" в коде. Я рекомендовал бы что-то вдоль этих строк:
<p id="question1">
<label for="input1">Volume =</label>
<input type="text" name="userInput1" id="userInput1" />
<button type="button">Check answer</button>
<input type="hidden" id="answer1" name="answer1" value="3.93e-6" />
</p>
и
$("button").click(function () {
var correctAnswer = $(this).parent().siblings("input[type=hidden]").val();
var userAnswer = $(this).parent().siblings("input[type=text]").val();
validate(userAnswer, correctAnswer);
$("#messages").html(feedback);
});
Не совсем уверенный, как Ваш проверять и обратная связь работают, но Вы получаете идею.