我有以下DOM:
<div class="qtip qtip-light qtip-active">
<div class="qtip-wrapper">
<div class="qtip-borderTop"></div>
<div class="qtip-contentWrapper">
<div class="qtip-title">
<div class="qtip-button"></div>
**Text I need to extract**
</div>
<div class="qtip-content">
<div class="tooltip">
<div class="button-container">
<script type="text/javascript">
var link = null;
var link = $('.qtip-active > .qtip-title').val();
$('.qtip-active > #button-container').append('<a href=\"mailto:' + link + '\">' + link + '</a>');
</script>
</div>
</div>
</div>
</div>
<div class="qtip-borderBottom"></div>
</div>
</div>
但是当我希望它返回指定节点的文本时,变量link
总是未定义的。我已经阅读了几个小时的jquery文档,但我必须错过一些我的逻辑(或缺乏)。
任何帮助表示赞赏...
答案 0 :(得分:4)
jQuery的val
函数返回表单元素的值(<input>
,<select>
或<textarea>
)。
您的.qtip-title
是一个常规HTML元素,因此您应该调用jQuery的text()
函数来获取元素的内容。
另外,你使用了错误的选择器。 A > B
是child selector,会匹配B
元素中直接的所有A
元素。
您需要使用descendant selector撰写$('.qtip-active .qtip-title)
,以匹配.qtip-title
内任何位置显示的所有.qtip-active
元素。
正如ryanulit指出的那样,您还需要将第二个选择器更改为$('.qtip-active .button-container')
。
答案 1 :(得分:4)
尝试:
var link = $('.qtip-active .qtip-title').text();
qtip-title
实际上并不是qtip-active
的孩子。
只是为了澄清:
$("a > b")
表示b
元素的所有a
的集合,而不是:
$("a b")
表示b
元素后代的所有a
元素集。
当然qtip-title
不是输入元素,因此请使用text()
而不是val()
。