Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails .on(“单击”),当使用ajax呈现链接时,函数()不起作用_Ruby On Rails_Ajax_Ruby On Rails 3_Jquery - Fatal编程技术网

Ruby on rails .on(“单击”),当使用ajax呈现链接时,函数()不起作用

Ruby on rails .on(“单击”),当使用ajax呈现链接时,函数()不起作用,ruby-on-rails,ajax,ruby-on-rails-3,jquery,Ruby On Rails,Ajax,Ruby On Rails 3,Jquery,下面的链接显示了一个模式,并运行了一个ajax请求,以根据对象id在模式中呈现部分。当页面完全加载http请求时,该链接工作正常,并且该模式会弹出,但如果我使用ajax请求呈现链接(例如,会弹出一个不同的模式并呈现一些链接)然后js函数就不运行了。我尝试了一个alert();只是为了检查,但当它用ajax呈现时,它不会运行 我使用的是jQuery1.9.1,以前js使用的是.live('click'),但后来被删除了。我也尝试过。click() 有什么想法吗?谢谢 链接 用于事件委派..由于链接

下面的链接显示了一个模式,并运行了一个ajax请求,以根据对象id在模式中呈现部分。当页面完全加载http请求时,该链接工作正常,并且该模式会弹出,但如果我使用ajax请求呈现链接(例如,会弹出一个不同的模式并呈现一些链接)然后js函数就不运行了。我尝试了一个alert();只是为了检查,但当它用ajax呈现时,它不会运行

我使用的是jQuery1.9.1,以前js使用的是.live('click'),但后来被删除了。我也尝试过。click()

有什么想法吗?谢谢

链接


用于事件委派..由于链接是动态生成的…单击事件将不会被激发…使用文档委派事件

 $(document).on("click","a[name='modal']", function(e) {
       ..
 });

您可以浏览以阅读有关委派事件的更多信息。。如果您委派文档中最接近元素的事件,将比委派文档中最接近元素的事件要好得多。

为了获得更好的性能,请使用将事件处理程序附加到父元素,并将选择器作为参数传递

例如:

$(document).on("click", "a[name=modal]", function(e) {...});

这也适用于动态生成的元素。

基本上,您需要将click事件的侦听器绑定到DOM中不会更改的内容。
on()
有一个可选参数,可用于将事件触发器筛选到选定为侦听器的项的子元素。最简单的方法是使用
文档
,但我更喜欢使用我知道不会更改的最接近的父元素。因此,假设我有此标记:

<div id="super-awesome-parent">
    <ul>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
    </ul>
</div>

然后,在
ready()
事件之后添加到
#super awesome parent
中的任何
元素仍将由代理处理。

您从chrome中的javascript控制台中得到了什么错误?非常感谢您!我花了太长时间试图弄清楚我的侦听器没有启动的原因!
 $(document).on("click","a[name='modal']", function(e) {
       ..
 });
$(document).on("click", "a[name=modal]", function(e) {...});
<div id="super-awesome-parent">
    <ul>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
        <li><a href="#">Some link text</a></li>
    </ul>
</div>
$('#super-awesome-parent').on('click', 'a', function(event){ 
    // ... code 
});