jquery - 使用 jQuery 的 ReplaceWith 函数后如何获取 id 或 class?

标签 jquery django jquery-selectors replacewith

目前我正在使用 django 开发一个项目,我的一个 View 通过 ajax 调用和 ReplaceWith 函数填充表格。奇怪的是,我的 html 源没有改变,但我可以从 chrome 的检查参数中看到所有表格内容。当我想从生成的内容中获取 id 或类时,jQuery 找不到任何东西。

那么我是否以错误的方式使用了replaceWith?以及如何从新生成的内容中选择元素?

这是代码:

Jquery 部分

   $('#channel_selector').change(function(event)                                                                                                               
   {                                                                                                                                                           
       event.preventDefault();                                                                                                                                 
       var selected_channel = $('#channel_selector').val();                                                                                                    
       deneme(selected_channel);                                                                                                                               
   });                                                                                                                                                         

   function deneme(d){                                                                                                                                         
       $.ajax({                                                                                                                                                
             type:"POST",                                                                                                                                      
             url:"/wsp/proginfo/",                                                                                                                       
             data:d,                                                                                                                                           
             dataType:'text',                                                                                                                                  
             success: function(msg){                                                                                                                           
               var entity_table = $(msg).find("#program_table tbody").html();                                                                                  
               entity_table = "<tbody>" + entity_table + "</tbody>";                                                                                           
               $("#program_table tbody").replaceWith(entity_table);                                                                                            
             }                                                                                                                                                 
    });

生成内容

  {% for entity in entities %}                                                                                                                                           
    <tr>                                                                                                                                                               
       <td>                                                                                                                                                            
         <input type="checkbox" name="entity_selection" />                                                                                                             
       </td>                                                                                                                                                           
       <td>{{entity.pk}}</td>                                                                                                                                          
       <td><input type="text" value="{{entity.get_name}}" /></td>                                                                                                      
       <td><input type="text" value="{{entity.get_productionYear}}" /></td>                                                                                            
       <td><input type="text" value="{{entity.get_director}}" /></td>                                                                                                  
       <td><input type="text" value="{{entity.get_cast}}" /></td>                                                                                                      
       <td><input type="text" vaue="blah"/></td>                                                                                                                       
       <td><input type="text" value="{{entity.get_ProgramDetail}}"></td>                                                                                               
       <td>                                                                                                                                                            
           <input type="submit" class="testB" value="Yeni Bölüm"/>                                                                                                     
       </td>

我想在单击 testB 按钮时发出警报

   $('.testB').click(function(){                                                                                                                               
       alert("ok");                                                                                                                                            
   });     

最佳答案

由于您通过ajax替换内容$('.testB').click()将不起作用,因为我假设您正在文档准备中注册该事件处理程序或类似的内容。创建事件处理程序依赖于注册时 dom 上存在的元素。如果要将事件处理程序附加到尚未附加到 dom 的元素,请使用 .live().delegate()

$('.testB').click(function(){                                                                                                                               
       alert("ok");                                                                                                                                            
});

变成

$('.testB').live('click', function(){                                                                                                                               
       alert("ok");                                                                                                                                            
});

这是 jsfiddle 上的示例描述了所有三种情况。

关于jquery - 使用 jQuery 的 ReplaceWith 函数后如何获取 id 或 class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5028498/

相关文章:

javascript - 如何使用 JQuery 从另一个文件加载 HTML 片段?

javascript - 势不可挡的addEventListener

python - Django 可重复字段仅包含新项目

jQuery:同时选择一个元素的类和 ID?

javascript - 如何选择在 jQuery 中使用 .html() 添加的 HTML 元素

javascript - 范围 slider 开始和结束处的圆圈

javascript - Multer 返回 req.file undefined

django - Django 的 filter() 和 get() 方法的区别

python - django 自定义重置密码表单

javascript - 如何使用 jQuery 隐藏表中特定类的最后一个表行