2014-07-01 53 views
3

我知道了通过jQuery traversal文档,没有一个jQuery函数,将做我在找什么,所以我问什么组合(如果有的话)会做的伎俩。jQuery - 最近的上一个兄弟

如果我们有1 <span>为每<textarea>页面上,而无需获得创意加入id的或class ES或data-属性等想获得最接近以前<span><textarea>那就是target当前的​​事件。

我们可以用什么样的jQuery遍历函数来解决这个问题?我研究并尝试了我所知道的一切。

查看此Fiddle以更好地观察此问题。

回答

4

没有一个jQuery函数,会做什么,我正在寻找

其实,你想要的是prev

使用prev('span')获取与给定选择器匹配的上一个元素。

$('div').on('keydown', 'textarea', function() { 

     $(this).prev('span').text($(this).val()) 

}) 

http://jsfiddle.net/aQ83s/2/

需要注意的是,在​​事件,textarea的价值尚未改变。

+0

干得好,和日谢谢你。 –

+0

这个答案是错误的。如果添加回答者删除的'
'标记,它将不再起作用,这根据op是原始点。看到这里:http://jsfiddle.net/r3wt/aQ83s/16/ – r3wt

+0

@ r3wt这不是问的问题。这个答案没有“删除”任何东西,它是基于提供的小提琴:http://jsfiddle.net/id_0t/aQ83s/1/ – meagar

0

一种替代,使用自定义数据属性和目标:

http://jsfiddle.net/r3wt/aQ83s/15/

jQuery的

$('div').on('keyup', 'textarea', function() { 
    var target = $("span[extra-data='"+$(this).attr('target')+"']"); 
    target.text($(this).val()); 
}); 

HTML

<div> 
    <span extra-data="1">1</span> 
    <br /> 
    <textarea target="1"></textarea> 

    <span extra-data="2">2</span> 
    <textarea target="2"></textarea> 

    <span extra-data="3">3</span> 
    <textarea target="3"></textarea> 
</div> 
+1

感谢您对此@ r3wt的意见。我的问题指出,不要使用'id'或'class'或'data-'属性很重要的原因是通过社区确认jQuery中没有我忽略或滥用的功能(这是在链接函数时可以很容易做到),或者在生成动态HTML块时有希望缓解使用额外的功能。再次感谢您的意见。 –

+0

@ id.ot没问题 – r3wt