我想为具有特定内容的标签找到一个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();
提前致谢!
答案 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!");
});