【问题标题】:How to select the previous input independent of the HTML structure?如何独立于 HTML 结构选择上一个输入?
【发布时间】:2013-04-23 19:24:20
【问题描述】:

我搜索了很多试图解决这个问题,但我只是找到了具体的解决方案,我想知道是否有一种方法可以选择独立于 HTML 结构的先前输入文本。

不知道这是否可能,但如果有一个“通用”的解决方案来解决这个问题会很好。

这是不可能的,这是我的情况:

<ul>
<div class="inputMusics">
    <div class="music">
        <li>                
            <label>Artist:</label>
            <input class="artists" type="text" name="artistMusic[]" value="artist"/>
        </li>
        <li> 
            <label>Title:</label>
            <input class="title" type="text" name="titleMusic[]" value="title"/>
        </li>       
        <li> 
            <label>Album:</label>
            <input class="albuns" type="text" name="albumMusic[]" value="album"/>
        </li>           
    </div>
</div>  
<button id="addMusic" type="button"> + Add musics</button>   
<button id="removeMusic" type="button"> - Remove music</button>

$(".title").focus(function(){
// select the previous input    
}

谢谢!

【问题讨论】:

  • 但是你的 HTML 中一开始就没有“title”类的元素。 “前一个输入元素”到底是什么意思?参考是什么(即,之前的相对于什么?)并且通过选择,您的意思是专注于前一个元素,选择前一个元素中的文本,它们的组合......?
  • @Terry titulo 相当于西班牙语中的title,这可能是一个简单的疏忽。
  • 抱歉,@Ohgodwhy 是正确的...

标签: jquery html input jquery-selectors


【解决方案1】:
$('.titulo').focus(function(){
    $(this).closest('li').prev().find('input').val();
});

其中,closest li 将是parent liclosest li 的前一个元素是previous li,然后我们只需找到input and grab the val

【讨论】:

  • @AugustoCarmo 对此感到抱歉.. 今天动作太快了。
  • 但这不依赖于 HTML 结构,从而解决了你最初的问题吗?
【解决方案2】:

可能是这样的jsFiddle?基于此SO thread

jQuery

$('.title').focus(function() {
  alert($(':input:eq(' + ($(this).index() - 1) + ')').val());
});

【讨论】:

  • 奇怪,alert返回“1”,不知道为什么,选择正确..我用'console.log($(':input:eq(' + ( $(this).index() - 1) + ')').prop('tagName'));'它返回了 INPUT,但是我不知道这个“1”是从哪里来的。
  • 很奇怪。当我点击标题输入框时,FF正在报告“艺术家”......你使用的是什么浏览器?
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 2021-12-14
  • 1970-01-01
  • 2010-09-21
  • 2011-12-18
相关资源
最近更新 更多