首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ajax请求的Yii2 jquery冒泡处理

ajax请求的Yii2 jquery冒泡处理
EN

Stack Overflow用户
提问于 2017-04-06 07:09:18
回答 1查看 144关注 0票数 0

第一:我不知道我的头衔是否结构良好,我不想为此道歉!我有一个模式形式,以显示从所有用户发送的消息。当我单击message时,它应该以相同的形式通过ajax请求打开它!问题是,当我单击某个消息时,似乎出现了冒泡现象。在刷新页面并再次单击之后,有时它会冒泡到最后一条消息,有时不会。不知道那是什么行为。会告诉你一些建议,因为我几乎一天都在挣扎。我只想打开所选的信息。我尝试过whit event.stopImmediatePropagation(),但它每次都会打开第一条消息。

我的模态代码:

代码语言:javascript
复制
<?php
                    Modal::begin([
                            'header' => '<h2><em>Messages</em></h2>',
                            'headerOptions' => [
                                    'class' => 'text-center',
                                ],
                            'id' => 'modal',
                            'size' => 'modal-md',
                    ]);

                    echo "<div id='userMessages' style='border: 1px solid black'>";
                        if(\app\controllers\UserController::getMessages())
                        {
                            $messages = \app\controllers\UserController::getMessages();

                            echo "<table class='table table-responsive'>
                                  <thead class='text-center thead-style'>
                                        <td>Title</td>
                                        <td>Author</td>
                                        <td>View</td>
                                  </thead>";

                            foreach ($messages as $message)
                            {
                                echo "<tr>

                                        <td class='text-center'>". $message['message_title'] ."</td>
                                        <td class='text-center'>". $message['message_author'] ."</td>
                                        <td class='text-center'>" . Html::a('<span class=\'glyphicon glyphicon-eye-open\'></span>',
                                                                                            ['#'],
                                                                                            ['class' => 'view-message']);
                                                                    $this->registerJs("$('.view-message').on('click', function(event){

                                                                        event.preventDefault();

                                                                        $.ajax({
                                                                            url : '". \yii\helpers\Url::to(["message", "id" => $message['message_id']]) ."',
                                                                            cache : false,
                                                                            success : function( data ){
                                                                                $('#userMessages').html( data );
                                                                            }       
                                                                        });
                                                                    })")
                                        . "</td>
                                      </tr>";
                            }

                            echo "</table>";
                        }
                    echo "</div>";

                    Modal::end();
                ?>

我的actionMessage:

代码语言:javascript
复制
public function actionMessage($id)
    {
        $currMessage = UsersMessages::find()->where(['message_id' => $id])->one();

        return $this->renderAjax('message',[
            'msg' => $currMessage
        ]);
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 07:24:09

当前正在添加多个单击事件,因此只触发第一个单击事件,因此只需要一个单击事件,就可以从循环中删除js,并向按钮中添加一个带有消息id的数据属性,然后在javascript中添加该id并构建您的url。

代码语言:javascript
复制
foreach ($messages as $message)
{
    echo "<tr>

            <td class='text-center'>". $message['message_title'] ."</td>
            <td class='text-center'>". $message['message_author'] ."</td>
            <td class='text-center'>" . Html::a('<span class=\'glyphicon glyphicon-eye-open\'></span>',
                                                                ['#'],
                                                                ['class' => 'view-message','data-id'=> $message['message_id']]);

            . "</td>
          </tr>";
}
$this->registerJs("$('.view-message').on('click', function(event){
    event.preventDefault();
    var id = $(this).attr('data-id');
    $.ajax({
        url : '". \yii\helpers\Url::to(["message"]) ."?id='+id,
        cache : false,
        success : function( data ){
            $('#userMessages').html( data );
        }       
    });
})")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43248099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档