0

我正在尝试使用其 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 上,但我看不出用什么来代替它。任何帮助将非常感激。

4

1 回答 1

0

当你想在 jQuery 选择器中使用元素 ID 时,你需要#前缀,所以它应该是:

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

但是你为什么首先得到ID?您已经拥有对该对象的引用,因此您无需搜索它。做就是了:

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();
        ...
于 2013-08-24T00:50:35.083 回答