我正试图从下面的html块中提取几个变量。如果您不介意帮忙,我们将不胜感激!
<div id="services">
<div id="service1">
<div class="left">
<img alt="Service Picture" src="/images/service-picture.jpg" />
<h2 class="serviceHeading">A Beautiful Header</h2>
<p>Some nice text.</p>
</div>
<div class="right">
<p>Some more nice text.</p>
</div>
<br class="spacer"/>
<a class="topButton" href="#" title="Back to Top">Back to Top</a>
</div>
<div id="service2">
<div class="left">
<img alt="Service Picture" src="/images/service-picture-2.jpg" />
<h2 class="serviceHeading">Another Beautiful Header</h2>
<p>Some even nicer text.</p>
</div>
<div class="right">
<p>Some even more nicer text.</p>
</div>
<br class="spacer"/>
<a class="topButton" href="#" title="Back to Top">Back to Top</a>
</div>
</div>
我希望该函数遍历#services
并获取每个img
的 src 值,以及来自内容的值每个<h2>
。
这就是我到目前为止......
$("#services div").each(function () {
var $this_html = $(this).html();
var h2_text = "";
var img_src = "";
});
答案 0 :(得分:3)
这应该有效。使用选择器#services > div
很重要,因为每个服务div都有一个子div。如果没有子选择器,您将获得两次服务。
$("#services > div").each(function () {
var imgSrc= $(this).find('img').attr('src');
var headerContent = $(this).find('h2').text();
});
答案 1 :(得分:2)
看一下find函数
http://docs.jquery.com/Traversing/find
在每个功能中,你可以找到你需要的东西:
$(this).find('h2').text();
$(this).find('img').attr('src');
答案 2 :(得分:1)
你很亲密。
$("#services div").each(function () {
var img_src= $(this).find('img').attr('src');
var h2_text = $(this).find('h2').text();
});
试一试。
答案 3 :(得分:0)
我想你想要这个:
$("#services div.left").each(function () {
var $this_html = $(this).html(); // don't know if you still want this
var h2_text = $(this).find(">h2").text();
var img_src = $(this).find(">img").attr("src");
});
div.left
已添加,因此您始终会获得包含正确元素的div。>
函数中使用find
来抓住孩子(效率更高)。$this_html
行,后者的内容不依赖于它。