Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript PHP jQuery HTML-获取自定义HTML属性_Javascript_Php_Jquery_Html_Ajax - Fatal编程技术网

Javascript PHP jQuery HTML-获取自定义HTML属性

Javascript PHP jQuery HTML-获取自定义HTML属性,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我有一个PHP文件,它列出系统中的所有订单,并向所有链接添加自定义属性oid(订单id)。我的链接看起来像: <a href='#' class='completeOrder' oid='$order_id'>$status</a> 您的主要问题是,您在错误的上下文中引用了此,因为函数getCompleteOrderTools中可用的此与您希望为所需链接的单击事件引用的此不同 您有两种选择: 使用jQuery(this.attr('oid') 或 使用jquery数据属

我有一个PHP文件,它列出系统中的所有订单,并向所有链接添加自定义属性
oid
(订单id)。我的链接看起来像:

<a href='#' class='completeOrder' oid='$order_id'>$status</a>

您的主要问题是,您在错误的上下文中引用了
,因为函数
getCompleteOrderTools
中可用的
与您希望为所需链接的单击事件引用的
不同

您有两种选择:

使用
jQuery(this.attr('oid')

使用jquery
数据
属性

jQuery(this.data('oid')

因此,使用
.attr
编写的代码如下所示:

$("body").delegate(".completeOrder", "click", function(event) {
    event.preventDefault();

    var myThis = $(this);//This is the 'this' corresponding to the link clicked

    getCompleteOrderTools(myThis);

    $(".content").toggleClass("hidden");
    $('div.hidden').fadeIn(800).removeClass('hidden');
    $("#notifications-drop").toggleClass('hidden');
});

function getCompleteOrderTools(myThis) {

    var o_id = myThis.attr('oid');
    alert(o_id);

    $.ajax({
        url:   "action.php",
        method: "POST",
        data: {
            getCompleteOrderTools: 1,
            orderId: o_id
        },
        success: function(data) {
            $(".row").append(data);
        },
    });
}

jQuery对象未传递给函数。您应该执行以下操作:

$("body").delegate(".completeOrder", "click", function(event) {
    event.preventDefault();
    getCompleteOrderTools(jQuery(this));

    $(".content").toggleClass("hidden");
    $('div.hidden').fadeIn(800).removeClass('hidden');
    $("#notifications-drop").toggleClass('hidden');
});

function getCompleteOrderTools(_this) {
    var o_id = _this.attr('oid');
    alert(o_id);

    $.ajax({
        url:   "action.php",
        method: "POST",
        data: {
            getCompleteOrderTools: 1,
            orderId: o_id
        },
        success: function(data) {
            $(".row").append(data);
        },
    });
}

通过将
jQuery(this)
传递给函数,您现在可以从单击事件完全访问jQuery对象。

您的jQuery版本???请注意,HTML中的自定义属性无效。如果要在元素中存储自定义元数据,请改用
data-*
属性。另外,
delegate
早就被弃用了。您应该更新jQuery的版本,并使用
on()
insteadreal?因为在产品部分,我可以设置pid=product\U id。。使用相同的技术,它就成功了?它可能可以工作,因为HTML非常宽容(有些人会说得太多),但它是无效的。为了解决您的问题,
getCompleteOrderTools()中的
这个
将不是您单击的元素,因为它是在不同的范围下调用的。您需要将元素作为参数提供给函数。
$("body").delegate(".completeOrder", "click", function(event) {
    event.preventDefault();

    var myThis = $(this);//This is the 'this' corresponding to the link clicked

    getCompleteOrderTools(myThis);

    $(".content").toggleClass("hidden");
    $('div.hidden').fadeIn(800).removeClass('hidden');
    $("#notifications-drop").toggleClass('hidden');
});

function getCompleteOrderTools(myThis) {

    var o_id = myThis.attr('oid');
    alert(o_id);

    $.ajax({
        url:   "action.php",
        method: "POST",
        data: {
            getCompleteOrderTools: 1,
            orderId: o_id
        },
        success: function(data) {
            $(".row").append(data);
        },
    });
}
$("body").delegate(".completeOrder", "click", function(event) {
    event.preventDefault();
    getCompleteOrderTools(jQuery(this));

    $(".content").toggleClass("hidden");
    $('div.hidden').fadeIn(800).removeClass('hidden');
    $("#notifications-drop").toggleClass('hidden');
});

function getCompleteOrderTools(_this) {
    var o_id = _this.attr('oid');
    alert(o_id);

    $.ajax({
        url:   "action.php",
        method: "POST",
        data: {
            getCompleteOrderTools: 1,
            orderId: o_id
        },
        success: function(data) {
            $(".row").append(data);
        },
    });
}