0

无论如何要在元素的子元素上绑定单击侦听器,同时仍将$(this)上下文指向该子元素的固定父元素?例如,让我们说我有一个页面 -

HTML:

<p><div data-important="idthatisneeded1" class="fixedClass">
<div id="dynamicallygeneratedfirstchild">
<div id="dynamicallygeneratedsecondchild">
<a class="clickabblelinkfromtheparent" href="#">Link1</a>
</div>
</div>
</div></p>
<p><div data-important="idthatisneeded2" class="fixedClass">
<div id="dynamicallygeneratedfirstchild">
<a class="clickabblelinkfromtheparent" href="#">Link2</a>
</div>
</div></p>

我想在点击时获取data-importantfrom的值,而不使用或者因为它们都不可靠 -.fixedClass.clickabblelinkfromtheparent.parent().parent().parent()

JS:

$(".fixedClass .clickabblelinkfromtheparent").on("click",function(){alert($(this).parent().parent().data("important"));return false;});

http://jsfiddle.net/zcdSw/

我也试过:

$(".fixedClass .clickabblelinkfromtheparent").on("click",function(){alert($(this).context(".fixedClass").data("important"));return false;});

http://jsfiddle.net/zcdSw/1/

$(".clickabblelinkfromtheparent", ".fixedClass").on("click",function(){alert($(this).data("important"));return false;});

http://jsfiddle.net/Q8a67/

$(".clickabblelinkfromtheparent", ".fixedClass").on("click",function(){alert($(this).context);return false;});

http://jsfiddle.net/Q8a67/1/

这些似乎都不起作用.. 那么这究竟是如何用 jQuery 实现的呢?

4

3 回答 3

1

你在尝试这样的事情吗?jsfiddle:http: //jsfiddle.net/zKp3P/

$(function(){
  $('.clickabblelinkfromtheparent').on('click', function(){
    //$(this).closest('.fixedClass').data('important');
    alert($(this).closest('.fixedClass').data('important'));
  });
});
于 2013-01-12T19:23:52.700 回答
1
$('.clickabblelinkfromtheparent').on('click', function(){
    alert($(this).closest('.fixedClass').data('important'));
});
于 2013-01-12T19:24:01.367 回答
0

要检索 DOM 树中祖先的第一个数据重要属性值,您可以基于以下代码段创建一些内容:

function searchDataInParentAxe($child, key) {
  var parent = $child.parent();
  return parent.data(key) || searchDataInParentAxe(parent, key);
}

$(".clickabblelinkfromtheparent").on("click", function () {
  alert(searchDataInParentAxe($(this), 'important'));
  return false;
});

http://jsfiddle.net/zoom/2mhSQ/

请注意,使用此方法,您不再需要 fixedClass。

于 2013-01-12T19:29:26.587 回答