我在发布DOM创建的元素时无法继承jquery事件。 据我所知,on()应该注意这一点 - 但我不能让它适用于在我的形式 - 总结中创建的元素' post'呼叫。 我也试过:$(" form")。on(" sumbit",function(){
$(document).ready(function(){
$('p.dev_summary').on("click",function() {
$(this).next().toggle();
});
$("form").submit(function() {
var dev_text = $('textarea').attr('value');
$.ajax({
type: "POST",
url: "composite/submit_dev",
data: "dev_text=test",
success: function(){
var $content = $('<div class=insert_dev id></div><p class=dev_summary>Some Text</p>');
$content.insertBefore( $('div.insert_dev');
}
});
return false;
});
});
提前谢谢。
HTML / PHP(codeigniter):
<div class="composite_wrapper">
<?php foreach($development as $row): ?>
<div class="insert_dev" id="<?php echo $row['orderid'];?>"></div>
<p class="dev_summary"><?php echo 'Summary: ' .$row['text'];?></p>
<div class="development"><?php echo $row['text']?></div>
<?php endforeach ?>
<?php
$attributes = array('style' => 'display: none');
?>
<?php echo form_open('#',$attributes); ?>
<?php echo validation_errors(); ?>
<p>
<label for="dev_text">Development:</label>
<br />
<?php echo form_textarea('dev_text'); ?>
</p>
答案 0 :(得分:2)
on()有2个实现。一个允许直接绑定元素,但这些元素必须存在,并且不考虑未来。
另一种方法是委派方法。您将处理程序委派给更高级别的元素或文档。此方法在事件冒泡时捕获事件
$(document).on('click', 'p.dev_summary', function ......
查看on()docs
中的可选选择器答案 1 :(得分:0)
关于jQuery如何处理这些事件处理程序,有一个非常好的详细阅读:
http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html
就像上面的海报所说,你正在使用on选择器来处理绑定处理程序。但你应该将它用于委托或现场。
答案 2 :(得分:0)
您可能想尝试bind: