无法从ID访问元素文本

时间:2013-08-24 00:46:13

标签: jquery text

我正在尝试使用其id访问span元素的文本。这里是一些html(使用点击事件来触发音频文件的英语/泰语网站的一部分)

        <p class="link_box"><span class="color_up set1" id="s1e01">I can.. </span>ฉันสามารถ..</p>
        <p class="link_box"><span class="color_up set1" id="s1e02">I cannot (can’t)</span>ฉันไม่สามารถ..</p>

我想使用span id“s1e01”访问并显示文本“I can ..”。这是js代码:

var  word1 = "";     
  jQuery("div#word_set").click(function (evnt) {
    if(audioIsPlaying !== true) {
      var elementId = evnt.target.id;
      word1 = jQuery(elementId).text();
      var pathVar = document.getElementById("pathVar").innerHTML;
      var oggVar = pathVar+elementId+".ogg";
      var audioElement = document.createElement("audio");
      ...

代码“jQuery(elementId).text()”似乎没有返回任何值,因为word1不会从其初始化值“”改变。这个问题似乎以elementId为中心,但我无法看到它的用处。任何帮助将非常感激。

1 个答案:

答案 0 :(得分:0)

如果要在jQuery选择器中使用元素ID,则需要#前缀,因此它应该是:

word1 = jQuery('#'+elementId).text();

但你为什么要首先获得身份证?您已经拥有对象的引用,因此您不需要搜索它。只是做:

word1 = jQuery(evnt.target).text();

您的处理程序也可以更精确:

jQuery("#word_set span.set1").click(function() {
    if(audioIsPlaying !== true) {
        word1 = $(this).text();
        ...

将处理程序绑定到特定目标时,this会自动设置为目标。如果动态添加这些元素,则可以使用委托:

jQuery("#word_set").on("click", "span.set1", function() {
    if(audioIsPlaying !== true) {
        word1 = $(this).text();
        ...