これはほとんどの人にとって非常に簡単なことですが、私が抱えているこの問題を解決するために何をすべきかを追跡したり考えたりすることはできません. ここを見てくださいフィドル
この関数では、入力の値を編集し、その入力にのみ送信する必要があります。私のコードで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')
クリックされたすべてのものではなく、特定の < に配置する必要があります。