javascript - 发布前的 ajax 条件变量

标签 javascript jquery html css ajax

我有一个赞按钮。它显示在事件提要的每个元素上。我最近还添加了点赞评论的功能。需要一些帮助调整 ajax 来处理这个问题。我目前抓取最近的 .feeditem 并获取 id,该 id 被格式化为具有元素的 ID。

评论显示在相同的 .feeditem div 中,因此单击“喜欢”会执行相同的代码,但不会保存正确的信息。有没有办法让它首先检查其中一个父 div id 是否以 activity-comment- 开头,如果是,让它选择不同的 div,如果它不在那个父 id 中,选择默认值(下方)?

或者如果您有更好的方法来实现这一点,请提出建议。 AJAX 较新,因此这可能不是最有效的方法。

$likeButton.click(function (event) {
    event.preventDefault();
var $itemClicked = $(this)

**//START SELECT**
var liking_user_id = $itemClicked.closest('.feeditem').attr('data-member').match(/\d+/);

var activity_id = $itemClicked.closest('.feeditem').attr('id').match(/\d+/);
**//END SELECT**

var data = {
    'action': 'save_like',
    'activity_id': activity_id,
    'liking_user_id': liking_user_id
}
$.ajax({
    type: 'post',
    url: ms_user_actions.ajaxurl,
    data: data,
    success: function (response) {
            if (!response.success) {
            }
            if (response.data.like == true) {
            $itemClicked.siblings('.feedBox_Likes').text('You Like This!');
            $itemClicked.html('Unlike').attr("like", "unlike");
            }
            if (response.data.unlike == true) {
            $itemClicked.html('Like').attr("unlike", "like");
            }
        }
    });
});

最佳答案

由于问题中没有 HTML,因此必须在这里做出一些假设。特别是,我假设你想要 liking_user_idactivity_id在这两种情况下,这两个值都是以相同的方式从相关容器节点 (div) 中读取的。

如果这些假设是有效的,那么最简单的方法可能是设计另一个类名(例如“likeContainer”)并将其应用于外部 (feeditem) 容器和每个内部评论容器。这个类名将附加到任何现有的类名,例如 <div class="feeditem likeContainer">

jQuery 将如下所示:

var liking_user_id = $itemClicked.closest('.likeContainer').attr('data-member').match(/\d+/);
var activity_id = $itemClicked.closest('.likeContainer').attr('id').match(/\d+/);

因此,

  • 当评论的“赞”被点击时,.closest()会找到一个内部评论容器
  • 当点击非评论的“赞”时,.closest()会找到一个外部的 feeditem 容器。

如果假设不成立,那么您可以考虑以不同方式构建外部和内部 div。这可能是阻力最小的路线。

关于javascript - 发布前的 ajax 条件变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22889522/

相关文章:

javascript - 未捕获的类型错误 : Function. 原型(prototype)。应用 : Arguments list has wrong type (? )

javascript - 正则表达式匹配特定的域格式

javascript - 如何在 React Flux 架构中通过一个操作将数据传播到多个存储?

html - 如何为书法文字制作动画,就好像它是手写的一样

javascript - 当我添加命中检测时,我的 Canvas 消失了

javascript - 如何根据屏幕分辨率应用特定样式表?

jquery - 客户端上的 jqGrid – 分页/编辑/排序查询

jquery - 滚动可拖动项目的内容时禁用 jQuery 拖动

javascript - jQuery backgroundPosition 不接受多个值?

jquery - 选中所有复选框 nextUntil