我正在使用'live'功能在表格行上点击一些东西,即
$("tr").live('click',function() {
alert('Some table row is clicked');
});
我想知道点击了哪一行并使用if-else
,根据它提供一些自定义提醒。谁能告诉我怎么做?
非常感谢。
编辑1:
有没有办法可以引用函数内单击行的元素?
答案 0 :(得分:6)
$("tr").live('click', function() {
if (this.id == "foo") {
alert('the tr with the foo id was clicked');
}
});
如果要查看哪个行号,请使用index
:
$("tr").live('click', function() {
if $(this).index() === 2) {
alert('The third row was clicked'); // Yes the third as it's zero base index
}
});
<强>更新强>
$("tr").live('click', function() {
// "this" is the clicked <tr> element
// $(this).find('td span') is the spans inside a td inside the clicked <tr>
}
答案 1 :(得分:2)
首先你不应该使用.live():)
你可以改用.delegate()
示例强>
$(document).delegate("tr", "click", function(e) {
// write your code here
});
答案 2 :(得分:2)
让我建议一个简单的方法。假设这是你的表:
<table>
<tr id = '1' class="tr">...</tr>
<tr id = '2' class="tr">...</tr>
<tr id = '3' class="tr">...</tr>
</table>
将它放在你的jQuery代码中:
$(function(){
$('.tr').click(function(){
var row_no = $(this).attr('id');
alert('Row number '+row_no+' was clicked');
});
});
希望这会对你有所帮助。
答案 3 :(得分:1)
HTML:
<table>
<tr><td>hey</td></tr>
<tr><td>hi</td></tr>
</table>
Jquery的:
$("table tr").click(function(){
messages( $(this).index() );
});
function messages(index) {
switch(index){
case 0:
alert("you clicked 1st row");
break;
case 1:
alert("you clicked 2nd row");
break;
default:
break;
}
$("table tr").eq(index).css("background","#ff0");
$("table tr").eq(index).find("a"); //will find all the nested anchor tags.
}
你去学习者,现在我将接受我的虚拟点:D。玩得开心。
答案 4 :(得分:0)
您可以使用this
访问所点击的元素。
offtopic :$ .live自1.7以来不推荐使用,你应该使用$ .on。有关详细信息,请参阅here。
答案 5 :(得分:0)
作为gdoron答案的改进,jQuery的live()已被弃用,请尝试delegate
或on
:
$("#mytable").delegate("tr", "click", function(e) {
if (this == "foo") {
....
}
});
答案 6 :(得分:-1)
//Even row
$("tr:even").click(function() {
alert('Even');
});
//Odd row
$("tr:odd").click(function() {
alert('Odd');
});