如何从特定的最近元素获取文本?

时间:2015-04-25 15:28:02

标签: jquery html closest

我一直在学习自己编写代码并用jquery库做一些奇特的东西,但我被困在这里。这就是我得到的:

<span class='ccy'>San Diego</span><span class='dc'> X</span>
<span class='ccy'>San francisco</span><span class='dc'> X</span>
<span class='ccy'>Palo alto</span><span class='dc'> X</span>

我希望能够点击$(“span.dc”)并只获取&lt;的文本()。跨度&GT;它旁边(城市的名称),如果html中只有一个城市,可以正常工作,但只要我不断添加它们,结果会变得混乱,我最终得到一个包含所有城市名称的字符串,我只需要一个。

我知道显而易见的事情就是给每个人一个不同的id,但它会变得更加混乱'因为html是根据用户触发的先前事件动态生成的,这些城市来自一个数组如果点击'x',我需要从中删除城市的个人名称,我希望我已经解释得很好。

jsfiddle here!!所以你可以更好地看到我的意思

2 个答案:

答案 0 :(得分:2)

您可以使用prev()获取上一个范围。

$("span.dc").click(function() {     
   var jj = $(this).prev('span.ccy').text();
});

小提琴here

答案 1 :(得分:2)

使用您的标记,最简单的是使用.prev

&#13;
&#13;
$(function() {
  $(".dc").on("click",function() {
    var city = $(this).prev().text(); 
    console.log(city);
    $("#msg").html("You clicked "+city);
  });
});
&#13;
.dc { padding-right:3px;border-right:1px solid black }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class='ccy'>San Diego</span><span class='dc'> X</span>
<span class='ccy'>San Francisco</span><span class='dc'> X</span>
<span class='ccy'>Palo Alto</span><span class='dc'> X</span>
<br/><span id="msg"></span>
&#13;
&#13;
&#13;