Javascript jQuery.val()/.text()不适用于特定的html块

Javascript jQuery.val()/.text()不适用于特定的html块,javascript,jquery,html,css,yii,Javascript,Jquery,Html,Css,Yii,我正在使用HandlebarsJS和Yii和PHP来呈现页面。下面是页面中的一块html/Handlebar代码 {{#if embed_link}} <p class='f_hidden_p'> <a href='{{embed_link}}'> {{embed_link}} </a> </p> <div class = 'l

我正在使用HandlebarsJS和Yii和PHP来呈现页面。下面是页面中的一块html/Handlebar代码

{{#if embed_link}}
       <p class='f_hidden_p'>
           <a href='{{embed_link}}'>
              {{embed_link}}
            </a>
       </p>
       <div class = 'link-wrapper'>
          <div class = 'link-container'>
              <a class = 'link-anchor-box'>
                  <div class = 'link-pic-wrap'>
                      <div class='playable_wrap'>
                         <div class='play_btn'></div>
                            <div class = 'link-img'></div>
                      </div>
                      <div class = 'link-text-data'>
                          <div class = 'link-text-title'> 
                             <span class = 'link-text-website'></span>
                          </div>
                          <div class = 'link-text-about'></div>
                       </div>
                   </div>
              </a>
            </div>
         </div>
{{/if}}
由于某些原因,这将返回一个空字符串或未定义。当我检查元素并进行检查时,我可以看到{{embed_link}}的值不是空字符串。 在那之后,我尝试了,给锚标记一个唯一的id“embed_link”,并尝试了

$(document).ready(function(){
       console.log($('#embed_link').text());
       console.log($('#embed_link').val());
});
但这也不起作用。我在HTML中的不同div中尝试了相同的语法,这些div也在Handlebar块中,效果非常好。因为某种原因,它对这个街区不起作用。 注意:.f\u hidden\u p是隐藏的->在CSS中显示为“无”。但我很确定这不应该阻止.text()或.val()获取文本


谢谢你的帮助

为了更好地格式化,我添加了这个

你试过这个吗

$(document).ready(function(){
  setTimeout(function() {
   console.log($('.f_hidden_p').text());
   console.log($('.f_hidden_p').val());
  }, 2000);
});

。。。没有结果?

尝试
$('.f_hidden_p').html()
在哪里渲染把手模板?在服务器或客户端上?嗯
.val()
仅用于从表单字段获取值,而不是从html内容获取值。但是您是对的,隐藏元素不应该停止工作。@user3739383当DOM就绪激发时(您的console.log调用),最终的HTML/文本内容可能还没有呈现。将这些调用放在AJAX的完整回调中&看看会发生什么。然后在AJAX调用中这样做,无论是在success中还是在.done()…OP中,注释中已经指出这不起作用,而在另一个注释中,说明文本是在AJAX调用后呈现的。
setTimeout
不仅不能保证文本在计时器用完之前就存在,而且如果文本提前呈现,还会造成不必要的延迟。我还没有看到任何代码或结果。我只是想确保进行正确的测试。ajax调用无法保证,但是如果他在检查时看到文本,数据就会在某个时候到达那里。我不是在拖延。。。只需再次检查目前正在进行的测试。
$(document).ready(function(){
  setTimeout(function() {
   console.log($('.f_hidden_p').text());
   console.log($('.f_hidden_p').val());
  }, 2000);
});