我在jQuery Mobile中有以下代码:
<ul data-role="listview" data-theme="d" id="#listview" data-divider-theme="d">
<li data-role="list-divider" class="name">Mr. Sam</li>
<li data-icon="false" class="details">
<a onclick="getInfo()">
在我的onclick
上,我想访问Mr. Sam
。以下是我在JS中尝试的以下代码:
var info = $(this).parent().parent().text();
因为,我点击了<a>
,它的父级是<li>
,而它的父级是<li>
,其中包含Sam先生。但我做错了,因为alert(info);
警告空白输出。
我需要改变什么?我甚至尝试过,.html()
。
答案 0 :(得分:3)
在你的标记中,目标li
不是被点击元素的祖父,它是父元素的先前兄弟:
<li data-role="list-divider" class="name">Mr. Sam</li>
---^
您可以使用prev
方法:
var info = $(this).parent().prev().text();
另请注意,在您的代码this
引用窗口对象时,您可以将this
传递给您的函数:
<a onclick="getInfo(this)">
function getInfo(elem) {
var info = $(elem).parent().prev().text();
}
由于您使用jQuery(从#
ID属性中删除ul
后)而不是onclick
属性,因此您可以使用click
方法。
$('#listview li.details a').click(function(event){
event.preventDefault();
var info = $(this).parent().prev().text();
// console.log(info);
})