jquery click()不一致地调用

时间:2012-05-14 02:50:52

标签: jquery click

我疯了。我有一系列div,它们绑定了点击事件。他们中的大多数按预期工作,但其中一些只是什么都不做。它们之间的代码没有区别(无论是在生成它们的javascript中还是在元素检查器中看到的结果HTML)。他们都在Safari中工作,但在Chrome中我有时会失败。在下面的代码中,即使是“PLAY”也从未写入控制台。

分享代码很难,因为它是如此大的一部分,但它基本上如下所示。首先是一些从javascript写入文档的HTML:

<div class='thumbnail' id='p-"+ip+"'></div>

结果如下:

<div class='thumbnail' id='p-220'></div>

然后我将click()绑定到它上面,如下所示:

      playHandler(ip);

      function playHandler(ip) {
          $("#p-"+ip).click(function() 
            console.log("PLAY");
            popTranscription.listen("canplayall",function() { this.currentTime(ip) });
            popTranscription.play();
            cued = true;
          });
      }

大多数情况下,点击div会触发绑定功能。有时不是。它始终是相同的特定缩略图类div不起作用(例如,我在文档中有很长的列表,每个都用'ip'变量区分。即ip 1,2,3总是有效,而4总是有效不行。)。

对不起,我没有更多要展示的内容,但是有没有人对找什么有任何想法?我失去了它。我尝试过使用bind()而不是click()。我尝试使用onclick而不是jquery,但这也给了我奇怪的不一致行为(有时候它会找到函数,有时候却找不到)。

更新:问题与页面上存在的重复ID有关。我在ID字符串中添加了一些唯一标识符,并清除了问题。谢谢你的领导!

1 个答案:

答案 0 :(得分:0)

试试这种方式

 $(".thumbnail").click(function() {
            var idchunk = $(this).attr('id');
            var ip = idchunk.split('-');
            console.log("PLAY");
            popTranscription.listen("canplayall",function() { this.currentTime(ip[1]) });
            popTranscription.play();
            cued = true;
          });