2016-11-30 115 views
0

我想不通为什么JQuery说lab.find()不是函数。我正在寻找在这个HTML文本:Uncaught TypeError:lab.find不是函数

<div class="btn-group col-md-4" data-toggle="buttons"> 

    <label data-pk="4" id="languagebuttonselect1" class="btn prmr-btn-empty top-margin left-margin center-elements target_language_choice active" style="padding: 8px; color: black; width: 100%;"> 
     <input type="checkbox" name="target_languages" value="4" autocomplete="off"> 

     <img align="left" width="30px" style="margin-bottom: 0;" src="/static/img/flags/550px\gb.png"> 
     <b class="left-margin" style="text-align: left">English</b> 
              </label> 
             </div> 

而且我想要得到的文本(在这种情况下,“英语”)当一个类的标签(标签)是active

function refreshSummaryTaretLanguages(){ 
    var actives = $('.target_language_choice.active'); 
    var summ_ul_targ_langs = $('#summary_target_languages > ul'); 
    summ_ul_targ_langs.empty(); 

    $.each(actives,function (_,lab) { 
     summ_ul_targ_langs.append('<li>'+lab.find('b').text()+'</li>'); 
    }) 
} 

不幸的是它找不到这样的标签中的任何东西,我不知道该怎么做。

+0

这意味着'lab'不是jQuery对象。 – Pointy

回答

2

jQuery通过$.each回调数组的元素,所以你得到的是DOM节点,而不是jQuery对象。

这将是简单的只使用了jQuery的.each()方法对象,你已经有了:

$(actives).each(function() { 
    summ_ul_targ_langs.append('<li>'+$(this).find('b').text()+'</li>'); 
}); 

.each()回调基本上做同样的事情作为$.each(),也将传递的元素。它还安排回调被调用,以便this也引用该元素。包装this作为$(this)为您提供了一个jQuery对象,您可以从中调用.find()

相关问题