Каскадные значения в иерархии ul> li с закрытием javascript/jquery

У меня есть ul > li > ul > li иерархия. У каждого ли есть связанное с ним текстовое поле ввода. Я хочу привязать обработчики событий onchange к каждому элементу ввода, чтобы при изменении этого элемента все последующие дочерние элементы ввода также наследовали это значение. Я хочу реализовать закрытие вокруг самой внутренней функции .bind для каждого элемента, чтобы я мог передать родительский вход значение во время выполнения. Как это лучше всего сделать?

var $generatedFeatureTree = $('.generated','#feature_weights');
// Get all input text boxes in the top level div
var generatedWeights = $generatedFeatureTree.find('input[type="text"]');
for(var i =0; i< generatedWeights.length; ++i){
 var $this = $(generatedWeights[i]);
 var value = $this.val();
 $this.bind('change',function(value){
 $$this = $(this);
 // get all children input elements of this node by traversing a parent 'li'
 // and getting the lone 'ul' child
 var children = $$this.parent('li').children('ul').find('input[type="text"]');
 for(var j=0;j
1 ответ

Возможно, я не понимаю, чего вы хотите, но я думаю, что у вас есть перепрограммированное решение. Не могли бы вы просто сделать это так?

var ******** = $('input[type=text]'); //use whatever selector you need to grab ALL textboxes
********.change(function() {
 $(this).siblings('ul').find('input[type=text]').val($(this).val());
});

На самом деле вам не важно, на каком уровне находится вход, все, что вам нужно сделать, - установить все входные данные ниже этого значения на одно и то же значение. Таким образом, вы можете присоединить одну и ту же функцию изменения ко всем входам. Моя функция просто ищет

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

      Вот живая демонстрация этого: http://jsfiddle.net/Ender/wXqcE/

licensed under cc by-sa 3.0 with attribution.