jQUery最接近的跨度未定义

时间:2013-01-08 17:18:30

标签: jquery

我的jQuery:

$(".result").on("click", function(event){
Side;
var Id = $(this).closest('span.bannerid').data('id');
$.ajax({type: 'GET', url: 'someurl/klik?id=' + Id + '&side=' + Side});
});

HTML横幅:

<div class="result">
<span class="bannerid" data-id="6"></span>
<p style="text-align: center;">
<a href="http://www.sonmeurl" rel="attachment wp-att-42">
<img src="http://www.someimageurl" width="930" height="180">
</a>
</p>
</div>

问题是,对于ajax调用,ID未定义,似乎无法找到带有id的span。

3 个答案:

答案 0 :(得分:3)

虽然您可以直接使用class

var Id = $('span.bannerid').data('id');

其他更多是

 var Id = $(this).children('span.bannerid').data('id');

var Id = $(this).find('span.bannerid').data('id');

注意: .closest()会找到element at the same level而不是父元素中的子女或孙子。

答案 1 :(得分:1)

.closest()用于搜索父母或自己。改为使用.find():

var Id = $(this).find('span.bannerid').data('id');

答案 2 :(得分:0)

由于它是直接的孩子,因此您可以使用children()过滤器。这比使用find()稍微有效一点,因为它不会遍历整个节点 - 只有它的直接后代。

$(".result").on("click", function(event) {
    Side;
    var Id = $(this).children('span.bannerid').data('id');
    $.ajax({type: 'GET', url: 'someurl/klik?id=' + Id + '&side=' + Side});
});