我试图在一个不能改变html标记的环境中选择第一个兄弟姐妹的内在价值 – 使用jQuery。
我有以下几点:
<tr> <td>3</td> <td>bob</td> <td>smith</td> <td>bob@example.com</td> <td> <img src="bobsmith.png" onclick="doSomething()" /> </td> </tr>
我试图获得第一个< td>的值具有以下内容:
function doSomething() { var temp = $(this).parent().parent().children().filter(':first'); alert("you clicked person #" + temp.html()); }
我从这里得到的都是null。
我已经尝试过与.siblings()函数的各种组合,但无济于事。
有任何想法吗?
谢谢,
注意:我忘了提到摘录是从动态加载的表从ajax电话刷新。这可能与包括绑定的建议有关。
解:
我已经使用以下解决方案,灵感来自于接受的答案:
<tr> <td>3</td> <td>bob</td> <td>smith</td> <td>bob@example.com</td> <td> <img src="bobsmith.png" onclick="doSomething(this)" /> </td> </tr>
并为jQuery javascript:
function startStopNode(el) { var temp = $(el).parent().siblings(':first').html(); alert("you clicked: " + temp); }
解决方法
$( 'td:first-child',$( this ).parents ( 'tr' ) ).html ();
这将选择图像的父TR中的第一个TD元素(:第一个子滤波器)。 parents()返回元素的所有父元素,我们过滤父元素,因此只返回TR元素。
也请尝试像这样写你的图像:
<img src="bobsmith.png" onclick="doSomething(this)" />
和你的功能如此:
function doSomething ( imgEl ) { }
并使用imgEl而不是这个