如何获取Anchor标签的子值?

时间:2017-09-28 19:05:50

标签: javascript jquery html dom

<a href="www.yahoo.com"> 
        <div id="id11" data-link="yah">
            <div class="s1">
                <div class="s2" style="color: white">abc</div>
                <div class="s3" style="color: white">xyx</div>
            </div>
        </div>
</a>
<a href="www.google.com"> 
         <div id="id11" data-link="goog"> <div class="s1">
                <div class="s2" style="color: white">abc</div>
                <div class="s3" style="color: white">xyx</div>
            </div>
        </div>
</a>

我希望在其父级href值= www.yahoo.com或www.google.com时获得数据链接的价值 谁能建议怎么做?

4 个答案:

答案 0 :(得分:2)

使用jquery click事件并使用.children().data()

访问孩子的data

&#13;
&#13;
$(document).ready(function() {

  $("a").on("click", function() {

      console.log($(this).children().data("link"));

  });

})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="//www.yahoo.com">
  <div id="id11" data-link="yah">
    <div class="s1">
      <div class="s2" style="color: white">abc</div>
      <div class="s3" style="color: white">xyx</div>
    </div>
  </div>
</a>

<a href="//www.google.com">
  <div id="id12" data-link="goog">
    <div class="s1">
      <div class="s2" style="color: white">abc</div>
      <div class="s3" style="color: white">xyx</div>
    </div>
  </div>
</a>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

ID必须是唯一的。根据roy的评论,你的hrefs不会从协议开始。

如果您需要直接从另一个函数获取数据链接,您可以写:

$('a[href="www.yahoo.com"] > [data-link], a[href="www.google.com"] > [data-link]')

相反,正如建议的那样,您可以创建一个单击事件处理程序。

摘录:

&#13;
&#13;
$('a[href="www.yahoo.com"], a[href="www.google.com"]').on('click', function(e) {
    if ($(this).children('div[data-link]').length != 0) {
        e.preventDefault();
        console.log($(this).children('div[data-link]').data('link'));
    }
})

//
// ..or without events
//
$('a[href="www.yahoo.com"] > [data-link], a[href="www.google.com"] > [data-link]')
   .each((idx, ele) => console.log(ele.dataset.link))
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<a href="www.yahoo.com">111
    <div id="id11" data-link="yah">
        <div class="s1">
            <div class="s2" style="color: white">abc</div>
            <div class="s3" style="color: white">xyx</div>
        </div>
    </div>
</a>
<a href="www.google.com">222
    <div id="id12" data-link="goog"> <div class="s1">
        <div class="s2" style="color: white">abc</div>
        <div class="s3" style="color: white">xyx</div>
    </div>
    </div>
</a>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您可以使用regexp使用纯js来验证链接..

var a = document.querySelectorAll('a');
Array.prototype.forEach.call(a,function(item){
  if(item.href.match(/www.yahoo.com/) || item.href.match(/www.google.com/)){
  var child=item.children[0];
  console.log(child.getAttribute('data-link'));
  }
});
<a href="www.yahoo.com"> 
        <div id="id11" data-link="yah">
            <div class="s1">
                <div class="s2" style="color: white">abc</div>
                <div class="s3" style="color: white">xyx</div>
            </div>
        </div>
</a>
<a href="www.google.com"> 
         <div id="id11" data-link="goog"> <div class="s1">
                <div class="s2" style="color: white">abc</div>
                <div class="s3" style="color: white">xyx</div>
            </div>
        </div>
</a>

答案 3 :(得分:1)

$(document).ready(function() {

  $("a").on("click", function() {

      console.log($(this).children(".subData").attr("data-link"));
  });

})

然后在你的div中添加一个类atrribute:

<div id="id12" data-link="goog" class="subData">