Javascript 如何获取元素周围的id?

Javascript 如何获取元素周围的id?,javascript,jquery,Javascript,Jquery,我有以下代码,我正在尝试确定a元素的id: <li> <a class="selectTour" id="32"> <span>Bla</span> <div class="margin-top-2"><font style="white-space:normal; font-size: small">Test 22</font></div> <p class="ui-l

我有以下代码,我正在尝试确定a元素的id:

<li>
 <a class="selectTour" id="32">
   <span>Bla</span>

   <div class="margin-top-2"><font style="white-space:normal; font-size: small">Test 22</font></div>

   <p class="ui-li-aside"><strong>Created</strong>
 </a>
</li>
问题是,当用户单击(例如)字体元素(或a元素以外的其他元素)时,返回错误的id。在我看来,这是一个标准的javascript/jquery问题,但我无法理解,需要向正确的方向推进。

您可以使用来查找最接近的点击目标的
selectTour
元素,然后使用来获取其id

selectTour: function (event) {
    $.mobile.loading("show");
    var tour_id = $(event.target).closest('.selectTour').attr('id');

    this.router.navigate("tour/" + tour_id, {
        trigger: true
    })
},

如果单击处理程序的目标是
selectTour
元素,您甚至可以尝试
e.currentTarget.id

您可以使用查找最近的点击目标的
选择Tour
元素,然后使用获取其id

selectTour: function (event) {
    $.mobile.loading("show");
    var tour_id = $(event.target).closest('.selectTour').attr('id');

    this.router.navigate("tour/" + tour_id, {
        trigger: true
    })
},

如果单击处理程序的目标是
selectTour
元素,您甚至可以尝试
e.currentTarget.id


我认为您应该通过以下方式稍微更改脚本:

var tour_id = ($(event.target)[0].id.length) ? $(event.target)[0].id : $(event.target).closest('a.selectTour')[0].id;

因为您的
event.target
元素并不总是
selectTour
,因此它不会为您获取它的id,因此,当您使用jQuery时,您可以检查id长度(如果可用),然后在
事件的情况下分配id,否则。target
不是
selectTour
,然后使用
.closest()
遍历到
selectTour
,将id获取并分配给
var tour\u id


使用jQuery的
.attr()


我认为你应该这样改变你的剧本:

var tour_id = ($(event.target)[0].id.length) ? $(event.target)[0].id : $(event.target).closest('a.selectTour')[0].id;

因为您的
event.target
元素并不总是
selectTour
,因此它不会为您获取它的id,因此,当您使用jQuery时,您可以检查id长度(如果可用),然后在
事件的情况下分配id,否则。target
不是
selectTour
,然后使用
.closest()
遍历到
selectTour
,将id获取并分配给
var tour\u id


使用jQuery的
.attr()


这件事给了我32分,我认为这是正确的

$('.selectTour').bind('click',function(e){
  alert($(this).attr('id'));
});

这件事给了我32分,我认为这是正确的

$('.selectTour').bind('click',function(e){
  alert($(this).attr('id'));
});


难道你不想在字体元素的onclick函数中使用
this.parentNode.parentNode.id
吗?谢谢你的回答,但这里的问题是用户并不总是单击字体元素。这在你的问题和标题中是不清楚的,你可能想澄清一下。您询问元素周围的id,您的文本说明您可以使用class
selectTour
在元素上附加事件,当用户单击字体元素时,返回错误的id。我很困惑。。。为什么不将onclick事件添加到类为“selectTour”的锚中,并在该函数中使用相应编辑的
this.id
?使其更清晰。谢谢你的评论,没问题。但我还是很困惑。。。为什么不将onclick事件添加到类为“selectTour”的锚中,并在此函数中使用
this.id
?此外,href元素指的是锚的href属性?难道你不想在字体元素的onclick函数中使用
this.parentNode.parentNode.id
吗?谢谢你的回答,但这里的问题是用户并不总是单击字体元素。这在你的问题和标题中不清楚,你可能想澄清一下。您询问元素周围的id,您的文本说明您可以使用class
selectTour
在元素上附加事件,当用户单击字体元素时,返回错误的id。我很困惑。。。为什么不将onclick事件添加到类为“selectTour”的锚中,并在该函数中使用相应编辑的
this.id
?使其更清晰。谢谢你的评论,没问题。但我还是很困惑。。。为什么不将onclick事件添加到类为“selectTour”的锚中,并在此函数中使用
this.id
?此外,href元素指的是主播的href属性?谢谢你的回复,但是。selectTour出现了n次。这是你一直在寻找的吗?谢谢你的回复,但是。selectTour出现了n次。这也是你一直在寻找的吗?这部作品似乎也更防弹。比阿伦的回答——你同意吗?如果你问我,我会说是的,这是必须的。这就是我刚才所做的这也很管用,对我来说似乎也更防弹。比阿伦的回答——你同意吗?如果你问我,我会说是的,这是必须的。这就是我刚才所做的