我确信这与clone()有关,但我在上面找不到任何东西。我的问题是我添加了一些带锚点的HTML。这些锚点应该响应click(),然后启动一个ajax调用。我似乎无法阻止锚点默认事件在$('.term a')上工作。
(function($) {
$(document).ready(function() {
var item = '#main-menu li';
var http_addy = 'http://windowsdeveloper.loc';
// voacabulary id is set in the menu. If one is found then load the terms to the menu
$('*[id*=vocabulary]:visible').each(function() {
var voc_id = $(this).attr('id').split('-');
var parent_li = $(this).parent('[class^=menu-]');
$.get(http_addy + '/category/content/term_list/' + voc_id[1], function(data) {
$(parent_li).append(data);
});
});
// use this to get the terms nodes
$('div.term a').click(function(event){
var url = $(this).attr('href');
$.get(url, function(data) {
$('#term-nodes').append(data);
});
return false;
});
$(item).mouseenter(function(event){
// Styles to show the box
$(this).children('.vocabulary').show();
}
);
$('.navigation').mouseleave(
function() {
$('#main-menu li').children('.vocabulary').hide();
}
);
});
})(jQuery);
<ul id="main-menu" class="links inline clearfix main-menu">
<li class="menu-1050 first">
<a id="vocabulary-3" href="/newsarticletopics/windowsdeveloper">Articles</a>
<div id="term-nodes"></div>
<div id="voc-3" class="vocabulary" style="display: none;">
<div id="term-12" class="term">
<a href="/category/content/term_nodes/12">Serien</a>
</div>
</div>
</li>发布于 2012-06-07 20:33:54
这是因为您正在动态加载一些内容并更新DOM。您应该使用jQuery on来绑定单击事件,如下所示
// use this to get the terms nodes
$(document).on("click",".term a",function(event){
event.preventDefault();
var url = $(this).attr('href');
$.get(url, function(data) {
$('#term-nodes').append(data);
});
});jQuery on适用于DOM中的当前和未来元素。从jQuery 1.7+开始提供on。如果您使用的是以前的版本,则应考虑使用live
发布于 2012-06-07 20:38:34
$("selector").on("click", function(e){
// Do some code here
});如果您使用的是旧版本的jQuery,则可以使用.delegate()
$("selector").delegate("click", function(e){
// .delegate() takes the parameters a bit differently i think , correct me if i am wrong
// Do some code here
});https://stackoverflow.com/questions/10931831
复制相似问题