0

これはほとんどの人にとって非常に簡単なことですが、私が抱えているこの問題を解決するために何をすべきかを追跡したり考えたりすることはできません. ここを見てくださいフィドル

この関数では、入力の値を編集し、その入力にのみ送信する必要があります。私のコードで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()思ったときにすべての入力に追加され、クリックが発生した特定の入力のみを参照する理由がわかりません。thisel

心に留めておいてください、私はこのコードをより良いフィドルに合うように書き直しました。それは私の実際のコードのロジックに基づいており、一部は私の実際のコードからコピーして貼り付けられ、ほとんどは再編集されました。主な目標は、開くクリックの元となった特定の入力を編集することです。

私が注目すべき主なことは、jQuery(el).parent().find('input').val(inConstructor.find(this).prev().val())

(警告: これは間違ったステートメントである可能性があります。私のロジックはここにあります)elは最初の要素.openthis参照し、.send. .openクリックが発生し た特定の入力を見つけて、そのinConstructor値を のクリック時の値の中にあるものに設定しますthis .send。したがって、私にとっては、入力の値を取得して、jQuery(el).parent().find('input')クリックされたすべてのものではなく、特定の < に配置する必要があります。

4

1 に答える 1

0

これを試してください:

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;
})

フィドル

于 2013-09-26T12:25:21.260 に答える