使用jQuery无法获取指定<p>子元素内容的问题求助
问题:无法获取指定
<p>元素内容,返回空值 尝试通过父元素ID pickup-searchbox 定位class为searchbox-info的子元素,再获取其下第三个<p>元素的内容,但得到空值。
页面HTML代码:
<div class="searchbox-wrapper show-info" id="pickup-searchbox"> <div class="searchbox-inner-wrapper"> ...... </div> <div class="searchbox-info" tabindex="-1"> <p style="font-weight: 400; margin-bottom: 15px;" class="t-text">Пункт получения:</p><p class="t-text">На Станиславского</p> <p class="t-text">Адрес: ул. Станиславского, 115А/1</p> <p class="t-text" style="opacity: 0.6; line-height: 22px; font-size: .9rem;">По улице Станиславского, между пер. Крыловской и пер. Университетский</p> <p class="t-text">Время работы: Пн-Пт 09:00-20:00, Сб-Вс 10:00-19:00</p> <p class="t-text">Телефон: +78632631122</p><span style="border-bottom: 1px dashed #000; font-weight: 400; margin-top: 10px; display: inline-block; cursor: pointer;" class="t-text searchbox-change-pickup">Изменить</span> </div> </div>
原脚本:
<script> $(document).ready(function(){ $('#allrecords').change(function() { var address = $('#pickup-searchbox').children('.searchbox-info').find('p:nth-child(3)').val(); $('#input_1699283005593').val(address); }); }); </script>
问题根源及修正方案:
- 错误使用
.val()方法:.val()仅用于获取表单元素(如input、select)的value属性,普通<p>元素的文本内容需要用.text()(获取纯文本)或.html()(获取含标签的内容)。 - (可选优化)选择器简化:
children('.searchbox-info')只能查找直接子元素,改用find('.searchbox-info')可支持多层嵌套查找,适用性更广。
修正后的脚本:
$(document).ready(function(){ $('#allrecords').change(function() { // 改用.text()获取文本,并用.trim()去除多余空格 var address = $('#pickup-searchbox').find('.searchbox-info p:nth-child(3)').text().trim(); $('#input_1699283005593').val(address); }); });
额外说明:
如果你的目标是获取地址的补充说明(即内容为По улице Станиславского...的<p>元素),注意DOM中子元素的顺序是按节点排列计算的,该元素是第4个<p>,需将选择器改为p:nth-child(4)。
内容的提问来源于stack exchange,提问作者Nikolay Kholin
相关产品推荐
相关产品推荐

