尽管在选择器中列出,但Jquery类没有响应.click()

时间:2012-07-31 14:02:14

标签: javascript jquery html

我在网页上有几个标签,可以点击,并且所有标签共享“btn”类。在控制台中,如果我使用选择器$('.btn');,则会出现以下元素:

<label id=​"skillstable_Certification" class=​"row btn">​Certification​</label>​,
<label id=​"skillstable_Compliance" class=​"row btn">​Compliance​</label>​,
<label id=​"skillstable_Technology" class=​"row btn">​Technology​</label>​,
<label id=​"skillstable_version(s)​" class=​"column btn">​Version(s)​</label>,​
<label id=​"skillstable_startdate" class=​"column btn">​StartDate​</label>​,
<label id=​"skillstable_enddate" class=​"column btn">​EndDate​</label>​,
<label id=​"skillstable_elapsedtime" class=​"column btn">​ElapsedTime​</label>,​
<label id=​"skillstable_expertiserating" class=​"column btn">​ExpertiseRating​</label>,​

匹配HTML:

</fieldset>
  <label id="fs_skillstable_heading" class="fs btn heading skillstable">Skills Table</label><br class="">
  <label id="skillstable_Certification" class="row btn">Certification</label>
  <label id="skillstable_Compliance" class="row btn">Compliance</label>
  <label id="skillstable_Technology" class="row btn">Technology</label><br class="">
  <label id="skillstable_version(s)" class="column btn">Version(s)</label><br class="">
  <label id="skillstable_startdate" class="column btn">StartDate</label><br class="">
  <label id="skillstable_enddate" class="column btn">EndDate</label><br class="">
  <label id="skillstable_elapsedtime" class="column btn">ElapsedTime</label><br class="">
  <label id="skillstable_expertiserating" class="column btn">ExpertiseRating</label><br class="">
</fieldset>

但是,这些元素只是没有注册$('.btn').on('click', function() {...})函数,该函数有一个console.log()部分,表明它已被点击。他们都有.btn级,所以我完全迷失在这里。我正在尝试创建一个用于持久化的数组,并使用.push()创建一个快速变量来显示我点击的所有元素,这样我就可以使用该字符串来创建持久性URL,但是注意到这些部分只是没有注册。

元素的生成范围在自调用函数(function TCC() {...})();中,因此我尝试将它们从该函数中拉出并单独调用它们,但这也不起作用。我还将函数从.click()切换到.on('click',function(){})无效。

Here是网页。

4 个答案:

答案 0 :(得分:2)

试试这个; on()用法:

编辑:@David Thomas提到this.id;将优于$(this).attr('id');

$(document).on('click','.btn',function() {
    var whichPart = this.id;
    console.log(whichPart);
});

Here is jsFiddle.

答案 1 :(得分:1)

出现此问题是因为您在“列按钮生成器”循环之前绑定了click事件。最简单的修复方法是使用“实时”事件

$('.btn').live('click',function(){...})

或者,为循环创建一个回调并绑定click事件。

答案 2 :(得分:0)

您可以在以下链接上测试示例代码:

http://jsfiddle.net/shivkant/ueHNg/4/

答案 3 :(得分:0)

你的页面在Chrome中工作,我点击了左侧部分的专业知识/技能/工具等,它显示了我点击右侧橙色部分的链接,如果这是你想要的。

如果已经打开了控制台/开发人员工具,它可以在IE中运行,这可能是因为你在代码中使用了console.log语句

参考此

What happened to console.log in IE8?