遍历DOM并将值插入<input />

时间:2014-02-07 09:20:16

标签: jquery insert traversal

复制粘贴会有很多代码,所以这里有一个fiddle

关注任何输入,按钮出现:

$('input').focus(function () {
        var $this = $(this);
       $this.closest('p').after($( ".specialCharactersWrap" ));

    });

然后单击,按钮的文本将插入输入:

 $('.specialCharactersWrap button').click(function() {
         var $this = $(this);
    var value = $(this).text();
    var input = $('.FillIn .FillInInput');
    input.val(input.val() + value);
    return false;
});

问题:它插入所有输入。我需要它插入上面的一个(聚焦)。尝试使用closest()遍历DOM,但它不起作用,它会中断,我在这里尝试失败===&gt; fiddle

如何将按钮文本转换为焦点中的单个输入?我究竟做错了什么? 谢谢。

3 个答案:

答案 0 :(得分:1)

尝试更改

var input = $('.FillIn .FillInInput');

为:

var input = $(this).closest('.specialCharactersWrap').prev().find('.FillInInput');

<强> Updated Fiddle

答案 1 :(得分:1)

试试这个,

$('input').focus(function () {
        var $this = $(this);
       $this.closest('p').after($( ".specialCharactersWrap" ));
        $('.FillInInput').closest('p').removeClass('focussed');
        $this.closest('p').addClass('focussed');
       // alert('test');

    });
     $('.specialCharactersWrap button').click(function() {
         var $this = $(this);
    var value = $(this).text();
    var input = $('.FillIn').find('.focussed').find('.FillInInput');

    input.val(input.val() + value);
    return false;
});

我在输入焦点上添加了一个类,然后在按钮点击时使用它 或者您也可以使用.prev()

答案 2 :(得分:1)

试试这个,

Demo

var $that = this // here my change
       $('input').focus(function () {
        var $this = $(this);
           $that = $(this);// here my change
       $this.closest('p').after($( ".specialCharactersWrap" ));
       // alert('test');

    });
     $('.specialCharactersWrap button').click(function() {
         var $this = $(this);
    var value = $(this).text();
    var input = $that;// here my change
    input.val(input.val() + value);
    return false;
});