2010-11-06 56 views
0

如何选择使用jQuery的onclick函数内锚标签的ID?jQuery选择

<a id="123" href="#" onclick="javascript: showDialog(select id of this anchor)"> Click it </a> 

在此先感谢。

回答

1

使用this关键字:

<a id="123" href="#" onclick="javascript:showDialog(this.id);">Click it</a> 
6

showDialog(this.id)但最好要做到这一点不显眼,而不是具有内嵌的事件处理程序。

编辑:ID不能以数字开头的DDorward说。必须是一封开始的信。

6

简短的回答是:

onclick="showDialog(jQuery(this).attr('id'));" 

较长的答案是:

  1. 不必由只是数字的编号。 * ID和名称标记必须以字母([A-Za-z])开头,后面可以跟随任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“_” ),冒号(“:”)和句点(“。”)。* - http://www.w3.org/TR/html4/types.html#type-name
  2. 请勿label如果您不需要,请不要混淆标签与declaring that an onclick attribute contains JavaScript(而不是其他语言)
  3. 不要使用jQuery的时候一个简单的属性会做(this.id更短,速度比jQuery(this).attr('id')
  4. 不要从一个元素的ID传递给一个函数,然后获取使用该ID的元素(如showDialog大概是这样)直接传递元素:showDialog(this)(你可能需要修改showDialog)。
  5. 请勿使用固有事件属性。 Unobtrusive JS是前进的道路。
  6. 取消您的活动。就目前而言,JS将运行,然后浏览器将按照链接...到页面的顶部。
  7. 当一个链接建设,在一些识相点href属性。如果JS不可用,那么用户可能不希望链接将它们发送到页面的顶部。 Build on things that work
3

在事件处理程序this指元素,所以this.id为您提供了元素的ID。

通常你会用代码添加事件处理程序,而不是有一个内嵌处理器。您还需要阻止链接的默认操作,该链接将转至href属性的地址。在这种情况下,它会跳转到书签#,这会导致页面滚动到顶部。

$(function(){ 
    $('#123').click(function(e){ 
    showDialog(this.id); 
    e.preventDefault(); 
    }); 
});