ajax中的.html()不起作用

时间:2014-03-26 12:13:05

标签: php html ajax

我想制作喜欢和不同于我制作的书,但这段代码只执行一次而没有刷新页面

JAVASCRIPT

<script type="text/javascript">
    $(document).ready(function() {
        $("#wish").click(function() {
            var userId = "<?php echo $this->session->userdata("user"); ?>";
            var bookId = "<?php echo $book->bo_id; ?>";

            var sendData = {"user_id": userId, "book_id": bookId , "flag": this.title};
            $.ajax({
                url: "<?= base_url(); ?>bookstore/book/add_read_wish/",
                type: "POST",
                data: sendData,

                success: function(data) {

                }
            });
            if ($(this).html() != "<img src='<?= base_url() ?>global/site/images/books.website_icon-16-presed.png' alt='' />") {
                    $(this).attr('id', 'delete_wish');
                    $(this).attr('title', 'حذف الكتاب من قائمة الأمنيات');
                    $(this).replaceWith("<a id='delete_wish' class='rss' href='javascript:void(0)' title='حذف الكتاب من قائمة الأمنيات'><img src='<?= base_url() ?>global/site/images/books.website_icon-16-presed.png' alt='' /></a>");
                    //this.title = "حذف الكتاب من قائمة الأمنيات";

                }
        });


        $("#delete_wish").click(function() {
            var userId = "<?php echo $this->session->userdata("user"); ?>";
            var bookId = "<?php echo $book->bo_id; ?>";

                 var sendData = {"user_id": userId, "book_id": bookId , "flag": this.title};
            $.ajax({
                url: "<?= base_url(); ?>bookstore/book/delete_read_wish/",
                type: "POST",
                data: sendData,

                success: function(data) {

                }
            });
            if ($(this).html() != "<img src='<?= base_url() ?>global/site/images/books.website_icon-16.png' alt='' />") {
                    $(this).attr('id', 'wish');
                    $(this).attr('title', 'أنوى قراءة هذا الكتاب');
                    $(this).replaceWith(" <a id='wish' class='rss' href='javascript:void(0)' title='أنوي قراءة هذا الكتاب'><img src='<?= base_url() ?>global/site/images/books.website_icon-16.png' alt='' /></a>");
                    //this.title = "حذف الكتاب من قائمة الأمنيات";


                }
        });


    });
</script>

HTML

<?php if ($book_wish == NULL) { ?>
                            <a id="wish" class="rss" href="javascript:void(0)" title="أنوي قراءة هذا الكتاب">
                                <img src="<?= base_url() ?>global/site/images/books.website_icon-16.png" alt="" />
                            </a>
                        <?php } else { ?>
                            <!--<div  id="wish">-->
                            <a id="delete_wish" class="rss" href="javascript:void(0)" title="حذف الكتاب من قائمة الأمنيات">
                                <img src="<?= base_url() ?>global/site/images/books.website_icon-16-presed.png" alt="" />
                            </a>
                            <!--</div>-->
                        <?php
                        }?>

2 个答案:

答案 0 :(得分:0)

您正在设置页面加载时#delete_wish的点击处理程序。但稍后您将在#delete_wish中动态创建$("#wish").click个链接。动态创建的#delete_wish链接未绑定到此处理程序。您需要重新绑定每个动态创建的链接。

(假设您将#delete_wish点击处理程序方法分隔为handlerFunction)

在ajax请求后的$("#wish").click

if ($(this).html() != "<img src='<?= base_url() ?>global/site/images/books.website_icon-16-presed.png' alt='' />") {
  $(this).attr('id', 'delete_wish');
  $(this).attr('title', 'حذف الكتاب من قائمة الأمنيات');
  $(this).replaceWith("<a id='delete_wish' class='rss' href='javascript:void(0)' title='حذف الكتاب من قائمة الأمنيات'><img src='<?= base_url() ?>global/site/images/books.website_icon-16-presed.png' alt='' /></a>");
  //bind a click handler for newly created link:
  $('#delete_wish').click(handlerFunction);
}

答案 1 :(得分:0)

问题是replaceWith JQuery函数。它基本上用“点击”替换你原来的元素。与新元素结合。

$(this).replaceWith(....)

更换后,新元素不会侦听点击事件。

我建议将你的两个人包起来,将其中的id移动到类似的地方:

<span id="wish" ><a id="wish" class="rss" ...>..</a> </span>

然后你不需要更改javascript代码(注意,id =&#34; wish&#34;需要在替换中删除)