函数在加载链接上不起作用 - jQuery函数

时间:2014-10-25 05:43:13

标签: jquery load

首先,我原谅你的英语!我已经学习了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(),但功能仍然无效!

谢谢大家:)。

对不起我的英语,我希望我理解发布新问题的规则。

1 个答案:

答案 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() {...});