首先,我原谅你的英语!我已经学习了2年了!
我的功能是为我的网站加载一个消息报价。
该功能可以这样工作:
用户点击
之类的链接 <a class="quote" href="i.quote.php?n=022050" rel="quote_link">Show quote</a>
ajax函数获取引用的文本。
响应文字替换
<a class="quote" href="i.quote.php?n=022050" rel="quote_link">Show quote</a>
带
<blockquote class='rounded'>text quote found</blockquote>
一切正常! 问题是在响应文本中,有另一个链接显示另一个引号。所以当我单击它时,函数不起作用,浏览器直接加载链接引用。
这是功能:
$('a[rel=quote_link]').on('click',function(){
linkQuote = $(this).attr('href');
textQuoted = $.ajax({url:linkQuote,type:"GET",async:!1}).responseText;
$(this).replaceWith( "<blockquote class='rounded'>" + textQuoted + "</blockquote>" );
event.preventDefault();
});
我已阅读stackoverflow.com
使用jQuery
.on()
,但功能仍然无效!
谢谢大家:)。
对不起我的英语,我希望我理解发布新问题的规则。
答案 0 :(得分:1)
有两种类型的事件处理 - 静态事件处理和委托事件处理(两者都使用.on()
完成。静态事件处理程序直接附加到与您的选择器匹配的任何对象,并在您安装时存在事件处理程序。这就是您正在使用的内容,因为新安装的元素在您安装事件处理程序时不存在,因此它们不会获得任何事件处理程序。
您可以切换到委派事件处理,也可以在新创建的DOM元素上手动安装事件处理程序。
有关如何使用委派事件处理的信息,请参阅以下参考资料:
jQuery .live() vs .on() method for adding a click event after loading dynamic html
jQuery .on does not work but .live does
Does jQuery.on() work for elements that are added after the event handler is created?
委派事件处理的基本概念是:
$(some static parent selector).on("click", 'a[rel=quote_link]', function() {...});