2011-02-19 48 views
0


我有几个HTML的结构是这样的:访问内标签文字使用jQuery

<div id="some_id" class="bio"> 
    <h3><img src="some.jpg" alt="alt_text" /><br /> 
    <a name="Name"></a></h3> 
    <div class="bio_info"> 
    <h3 class="bio_name">NAME TEXT</h3> 
     <p>BIO TEXT</p> 
     <div class="add_bio">MORE BIO</div> 
    </div> 
    <p><span class="add_bio_toggle">more</span></p> 
</div> 

,我虽然循环他们,用“这个”变量访问它们。什么是正确的方式来访问我已经大写的文本(名称文本,生物文本,更多的生物)?我一直在尝试变种

var bio.name = $('.bio_info.bio_name', this).html(); 

无济于事。我错过了什么?

[example code] 
    //get the national leadership, by column 
    $('#national_leadership .left_col .bio').each(function(){ 
     //create new object to add to nat_leadership array 
     var bio = new Object(); 
     bio.id = $(this).attr('id'); 
     bio.name = $('.bio_info', this).find('.bio_name').text(); 
     ... 

它发现id很好,但返回一个空字符串的名称。

+0

为furthur阅读,,通过这个http://api.jquery.com/text/ – kobe 2011-02-19 04:44:41

回答

0

这应该工作

$('.bio_name').text(); 

如果你是通过循环您可以使用

$(this).text() 

,那么请参阅... jQuery的发现()

http://api.jquery.com/find/

$('bio).find('.bio_name').text(); 
+0

,但不会是选择页面中的所有元素.bio_name? – danwoods 2011-02-19 04:45:46

+0

danwoods如果你循环你可以做$(this).text(); – kobe 2011-02-19 04:47:06

1

之后编辑OP的帖子更新:

例与each

$(".bio").each(function() 
{ 
    var bio_name = $(this).find(".bio_name").text() 
    var bio_text = $(this).find(".bio_name").next().text()); 
    var more_bio = $(this).find(".add_bio").text()); 
}); 
0

通过在bio_info DIV元素这将循环和提醒的内容,如果它是一个文本节点(你可能会想要做的比其他别的东西警报):

$(function() { 
    $(".bio_info").contents().filter(function() { 
     if(this.nodeType == 1) { 
      alert($(this).text()); 
     } 
    }); 
});