jquery函数里面动态生成的html无法正常工作

时间:2015-09-02 13:06:07

标签: jquery html

我查找了load方法,找到了php include的替代方法。我有动态添加html的负载,它的工作原理。但问题是功能不起作用。我认为这既是订单问题,也是结构问题或简单逻辑。任何帮助我的功能在动态生成的HTML中工作将不胜感激。下面的示例结构。

// Create new zip file to store the file.
auto zip_file(new QuaZip(file_path.string().c_str()));
if(zip_file->open(QuaZip::mdCreate))
{
    QuaZipFile file(zip_file);

    if(file.open(QIODevice::WriteOnly, QuaZipNewInfo("something.xml")) == false)
    {
         // Error
    }
    else
    {
        // Do stuff...
    }

3 个答案:

答案 0 :(得分:3)

如果您在.class内定义了header.html元素,那么您需要使用 event delegation ,如下所示:

$(document).on('click','.class',function () {
        $('#id').slideToggle('fast');
});
  

事件委派应该用于稍后部分或DOM加载后添加到DOM的控件。

<强>更新

当您将事件直接附加到以下元素时:

$('.element').click(function(){
....
});

或如下:

$('.element').on('click',function(){
....
});

这些事件不会附加到DOM加载后添加的动态添加元素或元素。因此,您需要将event附加到document定位到DOM中的特定element,如下所示:

$(document).on('click','.element',function(){
    ...
});

或在页面加载期间加载的父级。对于Ex:

假设你有以下结构:

<div class="somediv">
   <!--Many other children elements here-->
</div>

现在,您将通过appendload或以任何其他可能的方式添加一个活动,结构将如下所示:

<div class="somediv">
  <!--Many other children elements here-->
  <button class="element">Click here<button> <!--This is dynamically added element -->
</div>

现在您可以将事件附加到.somediv而不是附加到document,因为它是在DOM加载期间添加的,而新添加的元素将位于此.somediv中。

  

这实际上会明确改善代码的性能   告诉jquery从哪里开始动态搜索   添加.elementjquery可以更快地搜索它而不是   遍历document

所以你可以写如下:

$('.somediv').on('click','.element',function(){
 //^^^^parent div         ^^^dynamically added element
    //do anything here
});

答案 1 :(得分:1)

试试这个

$(document).ready(function () {
    "use strict";

    $("header").load("/_includes/header.html", function () {
       $('.class').click(function () {
           $('#id').slideToggle('fast');
       });
    });
});

答案 2 :(得分:0)

对旧的jQuery版本使用.live()

$( ".class" ).live( "click", function() {
  $('#id').slideToggle('fast');
});

旧版

$( 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+