我对jQuery有些新意,我只是想知道如何传递一个字符串值,而不是看起来是对选择器中的jQuery项的引用?我很难解释,所以这是一个示例演示。甚至不知道如何标题,所以如果你能想到更好的标题,请编辑标题。
在我执行$("td").filter(function(str){
的行中,传入的str成为我所在的TD的索引位置。因此,在第一次调试时,它在下一次为0时为0,依此类推。我试过谷歌,但我甚至不确定要搜索什么,任何文档/代码帮助将不胜感激
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select[name='showTeam']").change(function () {
$("select[name='showTeam'] option:selected").each(function () {
var str = $(this).val().toLowerCase();
//str = what it was set to up there
//alert(str);
$("td").filter(function(str) {
//str = becomes a number = to position of TD.. ie for 5th TD match STR = 4 (starts at index 0)
return $(this).text().toLowerCase().indexOf(str) != -1;
}).css('background','red');
});
})
});
</script>
Show Team: <select id="showTeam" name="showTeam">
<option>All</option>
<option>Chelsea</option>
</select>
<div id="games">
<table border="1">
<tbody>
<tr>
<th>ID</th>
<th>Game date</th>
<th>Field</th>
<th>Home team</th>
<th>Home team score</th>
<th>Away team</th>
<th>Away team score</th>
<th>Game type</th>
</tr>
<tr class="odd_line" id="game_460">
<td>459</td>
<td>03 Nov 19:00</td>
<td>Field 2</td>
<td>Madrid </td>
<td>3</td>
<td>Bayern Munich </td>
<td>1</td>
<td>Season</td>
</tr>
<tr class="odd_line" id="game_461">
<td>460</td>
<td>03 Nov 19:00</td>
<td>Field 3</td>
<td>chelsea</td>
<td>5</td>
<td>arsenal</td>
<td>4</td>
<td>Season</td>
</tr>
</div>
答案 0 :(得分:1)
嗯,是的。第一个参数将引用匹配元素集中元素的索引。只是做:
...
$("select[name='showTeam'] option:selected").each(function() {
var str = $(this).val().toLowerCase();
$("td").filter(function() {
return $(this).text().toLowerCase().indexOf(str) != -1;
}).css('background', 'red');
...
因为str
已经在filter
回调函数的范围内可用。
来自docs:
.filter(function(index))
function(index)一个函数,用作集合中每个元素的测试。 这是当前的DOM元素。
答案 1 :(得分:1)
$(document).ready(function(){
$("#showTeam").change(function () {
var searchFor = $(this).val().toLowerCase();
$("#games table tbody tr td:contains('" + searchFor + "')").parent().css('background','red');
})
});
答案 2 :(得分:1)
$(document).ready(function(){
$("#showTeam").change(function() {
var target = $("#showTeam").val();
$("#games td:contains(" + target + ")").css('background','red');
});
});
我做了一个jsfiddle来证明这一点。 http://jsfiddle.net/Zf5dA/
注意:
:contains()
区分大小写,所以我不得不让“切尔西”在桌面上大写。
我简化了select元素上的选择器 - 它有一个id,所以我选择了它。更快更简单。
这将找到包含文本的td
个单元格,但它们也可以包含其他文本。这将帮助您入门。