用于标签内容的jquery选择器

时间:2016-10-04 12:49:35

标签: jquery label selector contains startswith

我想为具有特定内容的标签找到一个jquery选择器。

所以使用以下html

<label for="foo1">Name</label>
<input type="text" name="foo1" id="foo1" value="Fadime"/>

<label for="foo2">SecondName</label>
<input type="text" name="foo2" id="foo2" value="Alice"/>

我希望能够通过前面标签的内容访问内容“Fadime”。我不想使用输入或id的名称,因为它们是自动生成的并且可能会更改。标签的内容虽然保持不变。对于第二个名字,我知道我可以使用:

var second_name = $("label:contains('SecondName')").next().val();

但是,我无法获得名字的内容:

var name = $("label:contains('Name')").next().val();

因为它会匹配两个标签(因为两者都包含“名称”)。

是否有一些equals-method或startsWith所以我可以使用

var name = $("label:equals('Name')").next().val();

提前致谢!

3 个答案:

答案 0 :(得分:1)

您是否有必要使用包含过滤器的文本,因为您可以使用下面的代码获取相应的标签文本。 请检查

iTunesConnect

答案 1 :(得分:0)

:contains用于元素。不是文字。您需要使用.filter()

$(function () {
  $("label").filter(function () {
    return $(this).text().indexOf("SecondName") > -1;
  }).next("input").val("Ha ha ha!");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="foo1">Name</label>
<input type="text" name="foo1" id="foo1" value="Fadime"/>

<label for="foo2">SecondName</label>
<input type="text" name="foo2" id="foo2" value="Alice"/>

将第二个名称打印到控制台:

$(function() {
  console.log(
    $("label").filter(function() {
      return $(this).text().indexOf("SecondName") > -1;
    }).next("input").val()
  );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="foo1">Name</label>
<input type="text" name="foo1" id="foo1" value="Fadime" />

<label for="foo2">SecondName</label>
<input type="text" name="foo2" id="foo2" value="Alice" />

答案 2 :(得分:0)

def sorter(value):
    parts = value[0].split()

    # Convert the first part to a number and leave all other parts as strings
    parts[0] = float(parts[0]);

    return (parts, value[1])

result = sorted(L, key = sorter)
$(function () {
  $("label").filter(function () {
    return $(this).text()=="Name"
  }).next("input").val("Ha ha ha!");
});

相关问题