我遇到了一个html锚标签的奇怪问题。我在html页面上有一个锚标签,点击'a'标签后它应该给我一个警告信息。它运作良好。但是,如果我使用jquery将新的'a'标记添加到html页面,并且单击附加的'a'标记不起作用。我能够给予href,目标等等等等,但是...... onlick功能无效。任何想法???
提前致谢。
答案 0 :(得分:1)
在jQuery中,您通常使用选择器上的.click()函数来设置单击处理程序。请注意,如果多个项目与选择器匹配,则多个项目将安装单击处理程序。
这是一个简单的代码片段,可以做你想做的事情:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script type="text/javascript">
function addLink(label, msg) {
/* Create link element.
The href="#" makes the link act like a link
(be highlighted, selectable, etc.).
The onClick="return false;" keeps the link from
scrolling the browser to the top of the page.
The onClick is not interfered with by jQuery's
.click() . */
var link = $('<a href="#" onClick="return false;">' + label + '</a>');
/* Install click handler. */
function clicked_handler() {
alert(msg);
}
link.click(clicked_handler);
/* Add the link to the body. */
$('body').append(link);
}
addLink('Link 1', 'You clicked link 1');
$('body').append('<br/>');
addLink('Link 2', 'You clicked link 2');
</script>
</body>
</html>
答案 1 :(得分:0)
你的问题不清楚。
我假设您通过撰写<a>
,然后在文档中添加新的$('a.whatever').click(function() { ... })
代码,为<a>
代码添加了点击处理程序。
当您编写$(...).click(...)
时,它只会在您添加处理程序时为$(...)
找到的元素添加处理程序。它不适用于您稍后添加的任何元素。
您可能正在寻找jQuery的live
方法,该方法将处理与选择器匹配的所有元素的事件,无论它们何时被创建。
例如:
$('a.whatever').live('click', function(e) { ... });
答案 2 :(得分:0)
尝试使用:
$("a").live("click", function(){
alert("Tadah!");
});
答案 3 :(得分:0)
添加事件适用于页面上已有的内容。如果您添加更多内容您必须将新的click事件绑定到这个新事物或使用live,这应该是第二个选项
所以不要做
$(something).append('<a href="" etc. ');
尝试这样的事情
$('<a></a>').attr('href','some url here').bind('click',function(){}).appendTo('body');