Это не будет проблемой для большинства из вас, но я не могу отслеживать или думать, что делать, чтобы решить этот вопрос, который у меня есть. Посмотрите здесь FIDDLE
В этой функции он должен отредактировать значение ввода и только отправить на этот вход, его, как в моем коде el
относится ко всем элементам, которые были нажаты.
Я думаю, что код объясняет мой угол, плохо вставьте некоторый jQuery здесь, если вам нужно больше просто спросить.
var app = {
sendEditDataToApp: function (el) {
//Type of element to send
var elType = jQuery(el).prev().attr('name')
//Element data
var elVal = jQuery(el).prev().val()
//Match the edit element with the element constructor
var inConstructor = jQuery(el).closest('.display-data').prev()
inConstructor.addClass('opened')
//Send to app
jQuery('.builder .send').click(function () {
//Set new data input value
jQuery(el).parent().find('input').val(inConstructor.find(this).prev().val())
alert(inConstructor.find(this).prev().val())
inConstructor.removeClass('opened')
});
}
}
jQuery('.open').click(function(e) {
e.preventDefault()
app.sendEditDataToApp(this)
})
HTML:
<div class="builder">
<input value="" />
<button class="send">Send</button>
</div>
<div class="display-data">
<div class="row">
<input name="html" value="input 1" />
<button class="open">Open</button>
</div>
<div class="row">
<input name="html" value="input 2" />
<button class="open">Open</button>
</div>
<div class="row">
<input name="html" value="input 3" />
<button class="open">Open</button>
</div>
</div>
Мой код получает .val()
ввода, я не уверен, почему его добавление ко всем входам, когда я думал, что использование this
и el
будет относиться только к конкретному входному клику.
Имейте в виду, я переписал этот код, чтобы подобрать лучшую скрипку, основанную на логике моего реального кода, некоторые были скопированы и вставлены из моего реального кода, большинство было переиздано. Основная цель - отредактировать конкретный вход, из которого пришел открытый клик.
Я бы сказал, что основное внимание следует сосредоточить на jQuery(el).parent().find('input').val(inConstructor.find(this).prev().val())
(ПРЕДУПРЕЖДЕНИЕ: это может быть неправильное утверждение, моя логика здесь) el
относится к первому элементу .open
, и this
относится к .send
. Я нахожу конкретный вход, из которого .open
, а затем установите это значение как находящееся внутри значения inConstructor
после щелчка на this
.send
. Поэтому мне нужно получить значение ввода и поместить его в конкретный jQuery(el).parent().find('input')
<- не все те, которые были нажаты.
попробуйте это:
var app = {
sendEditDataToApp: function (el) {
//Type of element to send
var elType = jQuery(el).prev().attr('name')
//Element data
var elVal = $(el).prev().val()
//Match the edit element with the element constructor
var inConstructor = $(el).closest('.display-data').prev()
inConstructor.addClass('opened')
//Send to app
$('.builder .send').click(function (ev) {
//Set new data input value
$(el).parent().find('input').val(inConstructor.find(this).prev().val())
alert(inConstructor.find(this).prev().val())
inConstructor.removeClass('opened');
$(this).unbind('click');
return false;
});
}
}
jQuery('.open').click(function(e) {
e.preventDefault();
e.stopImmediatePropagation();
app.sendEditDataToApp(this);
return false;
})