События Jquery для сообщения ajax после загрузки DOM - PullRequest
1 голос
/ 05 марта 2012

У меня проблемы с получением элементов, созданных после DOM для наследования событий jquery.Насколько я понимаю, on () должен позаботиться об этом - но я не могу заставить его работать для элементов, созданных в моем вызове form-sumbit '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>

Ответы [ 3 ]

2 голосов
/ 05 марта 2012

Есть 2 реализации on ().Один позволяет связывать напрямую с элементами, но эти элементы должны существовать, и не учитывает фьючерсы.

Другой метод - это метод делегирования.Вы делегируете обработчик элементу более высокого уровня или документу.Этот метод ловит событие, когда оно всплывает

 $(document).on('click', 'p.dev_summary', function ......

Посмотрите на дополнительный селектор в on () docs

http://api.jquery.com/on/

0 голосов
/ 05 марта 2012

Вы можете попробовать связать:

http://api.jquery.com/bind/

0 голосов
/ 05 марта 2012

Есть очень хорошее подробное чтение о том, как jQuery обрабатывает эти обработчики событий:

http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html

Как сказано выше, вы используете селектор on для обработки обработчика связывания. Но вы должны использовать его для делегата или в прямом эфире.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...