0

我正在使用 jquery.clone()根据用户点击将 HTML 添加到我的页面。

我想将 onclick 处理程序添加到新创建的 HTML 中。我知道.on()可以用来触发未来创建的 HTML 上的事件,但我相信必须在创建 HTML之前编写(并执行) 。

在这个示例代码中,如果用户从选择列表中选择“related_id”,jquery 会创建一个用户可以输入 id 的字段。我想在这里添加一个 ajaxy 的东西,这样用户就可以输入相关项目的名称而不是它的 id。ajax 请求将取决于用户选择的字段。

一般来说,我知道如何使用 jquery 发出 ajax 请求,但是如何将特定于字段的 ajax 代码添加到我新创建的 HTML 中?

4

3 回答 3

2

您的 jsfiddle 中有很多代码,其中大部分与这个问题无关。无论如何,如果我对您的理解正确,那么您寻求澄清的内容无论如何都是相当高级的。

我要做的第一件事是确保您class在所有新元素中都包含一个共同点。.on()然后,您将使用如下方式绑定到 click 事件:

$("#parentElement").on('click','.newClass', function() {
    var me = $(this).text(); //gets the specific text from each .newClass element when clicked
    doAjaxRequest( me );
}

Note#parentElement在创建此点击处理程序之前必须存在于 DOM 中。

您的doAjaxRequest功能将类似于以下内容:

function doAjaxRequest( elemText ) {
    $.ajax({
        ...
        data: elemText,
        ...
    });
}

Note.on()自 jQuery 1.7 起可用于此。对于旧版本,请参阅以下选项

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+

对于版本 1.4.4。代码如下:

$("#parentElement").delegate('.newClass', 'click', function() {
    var me = $(this).text(); //gets the specific text from each .newClass element when clicked
    doAjaxRequest( me );
}
于 2012-07-11T04:02:53.477 回答
1

您可以将<script type='text/javascript'> ... your jquery code here </script>标签与 HTML 的其余部分一起插入。

于 2012-07-11T03:41:09.167 回答
1

为什么不在将处理程序$clone添加到文档之前将其绑定到?

$clone.on("change", function(){
  //Do my AJAX  
});
于 2012-07-11T03:43:08.440 回答