javascript - 如何在Ajax中正确调用这个函数?

标签 javascript jquery html ajax

我有这个代码:

function changeEventStatusClass(object){
    if ($(object).hasClass("fa-circle")) {
        $(object).removeClass("fa-circle").addClass("fa-circle-o");
        //alert("adevarat");
    } else {
        $(object).removeClass("fa-circle-o").addClass("fa-circle");
    }
}

function changeEventStatus(eventId, status) {
    console.log(eventId, status);
    $.ajax({
        type:'POST',
        data: {
            eventId: eventId,
            status: status,
        },
        url: "<?php echo $this->serverUrl().str_replace('public','',$this->basePath()).'/user/ajaxupdateappointmentstatus'; ?>",
        success: function (result) {
            if (result.success) {
                console.log(eventId);
                changeEventStatusClass(eventId); //here is problem
            }
        }
    });
}

$(".crad").on('click', function(){
    var eventId = $(this).attr('data-id');
    var completed = ($( this ).hasClass("fa-circle-o")) ? true : false;
    console.log(completed);
    if (completed) {
        changeEventStatus(eventId, 7);
    } else {
        changeEventStatus(eventId, 0);
    }
})
<i class="fa fa-circle-o circle crad" data-id="241"></i>
<i class="fa fa-circle-o circle crad" data-id="242"></i>
<i class="fa fa-circle-o circle crad" data-id="243"></i>
<i class="fa fa-circle-o circle crad" data-id="244"></i>

当我尝试调用函数 changeEventStatusClass 时遇到问题,因为它不是参数 ID(它是 data-id);

如何正确排序才能实现此功能?目前该网站正在更改所有按钮的类别,我只想要当前的按钮

你能帮我解决这个问题吗?

提前致谢!

最佳答案

您可以使用Attribute Equals Selector [name=”value”] ,此外您还可以使用.toggleClass()添加或删除类。

function changeEventStatusClass(object){
    $("[data-id='"+object+"']").toggleClass("fa-circle-o fa-circle");
}

但是更好的方法是传递对象,例如

function changeEventStatusClass(element){
    element.toggleClass("fa-circle fa-circle-o");
}

function changeEventStatus(element, status) {
    $.ajax({
        type:'POST',
        data: {
            eventId: element.attr('data-id'),
            status: status,
        },
        url: "<?php echo $this->serverUrl().str_replace('public','',$this->basePath()).'/user/ajaxupdateappointmentstatus'; ?>",
        success: function (result) {
            if (result.success) {
                console.log(eventId);
                changeEventStatusClass(element); //here is problem
            }
        }
    });
}

$(".crad").on('click', function(){
    var element = $(this);
    var eventId = element.attr('data-id');
    var completed = element.hasClass("fa-circle-o");
    if (completed) {
        changeEventStatus(element, 7);
    } else {
        changeEventStatus(element, 0);
    }
})

关于javascript - 如何在Ajax中正确调用这个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057634/

相关文章:

javascript - 如何使用 v-bind :style? 内联 css 中的 v-for 列表中的数据

javascript - 将范围值写入拇指 slider

javascript - 通过 jquery ajax 返回的我的 JSON 数据上的意外标记 u

jquery - 查找 div 的长度

html - WordPress 中的 CSS Circle Mods,在哪里插入代码?

html - CSS 覆盖/不继承

jquery - 仅滚动标题的一部分并固定

javascript - 使用 jQuery 检查是否所有的 div 都被隐藏

javascript - 如何使用 jquery 将 html 树转换为自定义的 json 树?

javascript - jquery 查找数组中特定的字符串模式