2016-11-22 56 views
1

我有一個PHP文件,它將系統中的所有訂單放入並將自定義屬性oid(order-id)添加到所有鏈接。我的鏈接如下所示:PHP jQuery HTML - 獲取自定義HTML屬性

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

其中給出正確的HTML,當我做檢查元素我得到這個

<a href='#' class='completeOrder' oid='8'>Un-completed</a> 

這個鏈接被點擊時,我想這樣做的是,都會產生複選框形式和一個提交按鈕,其正確的訂單ID在它的HTML發送。因此,我可以將表單和訂單ID發送到另一個PHP文件進行處理(在這種情況下,更新訂單狀態)。

我在做什麼產卵與複選框的形式使用jQuery的AJAX調用,但是當我試圖提醒訂單ID檢查jQuery的得到了正確的OID它告訴我它的不確定...:

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

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

function getCompleteOrderTools() { 
    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); 
     }, 
    }); 
} 
+0

你的jQuery版本? –

+0

請注意,HTML中的自定義屬性無效。如果要將自定義元數據存儲在元素中,請改爲使用'data- *'屬性。此外'代表'在很久以前就被棄用了。你應該更新你的jQuery版本並使用'on()'而不是 –

+0

真的嗎?因爲在產品部分,我可以設置pid = product_id ..並使用相同的技術,它的工作原理是什麼? –

回答

0

你的主要問題是,你是在錯誤的情況下引用this在你的函數getCompleteOrderTools可用this不同的是this,你想引用您所需的鏈接的點擊事件。

你有2種選擇:

要麼使用jQuery(this).attr('oid');

或者

使用jQuery data屬性

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

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); 
     }, 
    }); 
} 
0

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對象。