2012-01-05 9 views
2

Я буквально провел часы с JQuery, пытаясь извлечь кусок текста из класса, в приведенном ниже коде вы можете увидеть, что при нажатии кнопки JQuery ищет класс, называемый имя, чтобы извлечь фрагмент текста, который в этом случае равен bob green.JQuery получить класс внутри родителя

Я всегда занимаюсь исследованием такого рода вещей, но поскольку ни один из этих кодов не работает, я застрял, в приведенном ниже коде JQuery вы можете увидеть, что я пытался разными способами извлекать текст.

Если бы кто-нибудь мог помочь мне исправить эту проблему, я был бы более чем благодарен.

<div class='replyContainer'> 
    <div class='image'></div> 
    <span> 
     <div class='close' title='Close'></div> 
     <b><font class='name'>bob green</font></b> 
     test message 
    </span> 
    <div class='bubble-triangle-border'></div> 
    <div class='bubble-triangle'></div> 
    <div class='info'> 
     <div class='reply'></div> 
    </div> 
</div> 


$(".replyContainer .reply").live('click',function(){  
    var replyName = "@" + $(this).parent().parent(".name").text(); 
}); 


$(".replyContainer .reply").live('click',function(){  
    var replyName = "@" + $(this).parent().parent().closest(".name").text(); 
}); 

$(".replyContainer .reply").live('click',function(){  
    var replyName = "@" + $(this).parent().parent("span font.name").text(); 
}); 

ответ

5
$(".replyContainer .reply").live("click", function() { 
     var replyName = "@" + $(this).closest(".replyContainer").find(".name").text() 
}) 

Несколько других вещей:

  1. jQuery.live() считается устаревшим (см: http://api.jquery.com/live/), вы должны использовать .delegate() или. on().
  2. Вы должны полностью не использовать тег <font>, но использовать CSS!
  3. closest() подходит к родителям и их родителям, а find() идет вниз и смотрит на детей!
+0

+1 для ультра скорости и устаревания и передовой практики примечание к загрузке;) – jaywon

+0

Это работает как шарм, и спасибо за совет, я ценю это. –

1
$(".replyContainer .reply").live('click',function(){  
var replyName = "@" + $(this).closest('div.replyContainer').find('font.name').text(); 
}); 
Смежные вопросы