Javascript PHP jQuery HTML-获取自定义HTML属性
我有一个PHP文件,它列出系统中的所有订单,并向所有链接添加自定义属性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数据属
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);
},
});
}