为什么 $(this).attr 不起作用?他们带回“未定义”

why doesn't the $(this).attr's work? They bring back 'undefined'

本文关键字:未定义 他们 不起作用 this attr 为什么      更新时间:2023-09-26

所以我有几个按钮,因为我不想为每个按钮编写相同的代码,所以我试图创建一个动态事件处理程序,它可以管理基于 .selected-pack 类的所有按钮,但所有 $(this( 属性都返回未定义,尽管有一个值。

这是 js:

//Function In Test! 
$('.selected-pack').click(function(event) {
    if($("#mainconsole").val() == "") {
        alert("Select Your Console!")
        return;
    }

    if($("#paymentmethod").val() == "") {
        alert("Select Your Preferred Payment Method!")
        return;
    }
     $("#selectConsolediv").fadeOut("medium", function() {
                    $("#choosePlatformLI").removeClass("active");

        var packipn = $(this).attr('data-ipn');
        var packipnpp = $(this).attr('data-ipnpp');
        var packname = $(this).attr('data-name');
        var packprice = "";
                    console.log(packname);
        if ($("#mainconsole").val() == "PS"){
           packprice = $(this).attr('data-psprice');
        }
        if ($("#mainconsole").val() == "XBOX") {
           packprice = $(this).attr('data-xbprice');
        }

        // Skrill
        $("#mainamount").val(packprice);
        $("#mainipn").val(packipn);
        $("#maindesc").val(packname);
        $("#maindiscount").val($("#discount1").val());
         // PayPal
        $("#mainamountpp").val(packprice);
        $("#mainipnpp").val(packipnpp);
        $("#ppitemname").val(packname);
        $("#maindiscountpp").val($("#discount1").val());

        $("#checkoutPackName").text(packname);
        $("#checkoutCode").text($("#discount1").val());
        $("#checkoutPrice").text("£" + packprice);
                    $("#checkoutdiv").fadeIn("medium", function() {
                        $("#checkoutLI").addClass("active");
                    });
     });
});

你们中有人发现错误吗?请尽快给我评论,提前谢谢:)

这是因为$(this)的范围在fadeOut()回调中发生了变化。 尝试添加:

var self = $(this);

$('.selected-pack').click(function(event) {后立即在顶部,并在整个过程中使用self