0

我不熟悉 JavaScript 或 jQuery,但我需要创建一个函数来添加和删除“我的收藏夹”页面上的博客文章并更新已保存文章的计数器。有没有现成的解决方案——插件或片段——可以做到这一点?

这是我的 HTML 片段。

<h1>
    <a href="http://www.example.com/add-post-to-my-favorites-page.htm" id="post_0064">
        <span class="bookmark" title="My Favorites — Add/Remove">Favorites </span>Heading
    </a>
</h1>
<p>Body copy.</p>
[...]
<ul class="ul_favs">
[...]
    <li id="bookmarks">
        <a href="http://www.example.com/account/favs.htm">My Favorites</a>
        <sup><!-- Counter -->46</sup>
    </li>
</ul>

我认为它可以用 来完成$.ajax,但我不知道如何。也许是这样的

4

2 回答 2

1

jQuery 实际上不会删除任何内容。如果您想真正删除项目,则必须在列表源处执行此操作。如果您的列表由静态 HTML 组成,您将需要一种可以访问原始文件并进行更改的语言,如 PHP。如果您的列表存储在数据库中,您将需要像 PHP 或 C# 这样的服务器端语言来进行这些更改。

jQuery 可以将数据发布到能够删除/添加/编辑数据库中的条目的服务器端脚本。您可能有如下 PHP 脚本:

if ($_POST) {
  $favid = $_POST["favid"];
  remove_favorite($favid);
}

jQuery 可以将 fvid 传递给这个脚本:

$.post("removefav.php", {favid:121});

这会将一个变量发布到服务器端脚本,然后该脚本将获取该发布变量的值并删除其在数据库中的相应记录。

这是一个非常粗略的示例,但足以让您更深入地了解 jQuery 与服务器端语言和数据库的关系。

于 2009-08-18T15:29:24.760 回答
0
function favorites() {
    $(".bookmark").click(function(event) {
        var request = $(this).parent.attr("id");
        var counter = parseInt($("#bookmarks sup").text());
        if ($(this).hasClass("ed")) {
            //Remove bookmark
            $.post("/account/favorites/remove.htm", { favid:request },
                    function() {
                        $("#bookmarks sup").text(--counter); // Decrease counter
                        $(this).toggleClass("ed"); //Toggle class of clicked element
                    });
        } else {
            //Add bookmark
            $.post("/account/favorites/add.htm", { favid:request },
                    function() {
                        $("#bookmarks sup").text(++counter); // Increase counter
                        $(this).toggleClass("ed"); //Toggle class of clicked element
                    });
        }
    });
}
于 2009-08-18T18:09:41.223 回答