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()输入,我不确定为什么当我想使用它时它会添加到所有输入中,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')<- 不是所有已单击的值中。

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 回答