我有一个jquery代码,如下所示
$(document).on('click', '.ajax', function(e) {
e.preventDefault();
var getUrl = $(this).attr('href');
var myData = $(this).data();
var data = new FormData();
for (var i in myData) {
data.append((i.replace("record", "")), myData[i]);
}
reModal(getUrl, data);
});

我想更改/更新此行:
var getUrl = $(this).attr('href');
此行必须同时href
和data-href
同时使用href
并且我想这样做......这可能吗?
<a href="files_path/bla.html" class="ajax">click me</a>
-
<div data-href="files_path/yeap.html" class="ajax">click me too</a>
答案 0 :(得分:1)
您无法使用attr
名称传递正则表达式。因此,您必须检查元素存在哪个attr
并选择它。
像这样的东西
var getUrl = $(this).attr('href') ? $(this).attr('href') : $(this).attr('data-href');
甚至更短
var getUrl = $(this).attr('href') || $(this).attr('data-href');
答案 1 :(得分:1)
attr的第二个参数必须是一个计算值的东西,它将被设置为参数。
如果要设置两个属性,可以链接方法,如下所示:
$(this).attr('href','one').attr('data-href','another');
如果你想要两者,只需单独查询它们,例如查询数组:
var getUrl = [$(this).attr('href'),$(this).attr('data-href')];
当其中一个属性具有NULL值并且它们具有某种优先级时,您可以使用||
运算符来获取第一个非空值:
var getUrl = $(this).attr('href') || $(this).attr('data-href');
答案 2 :(得分:0)
您可以通过将其传递给数据来获取第二个属性,如:
var getUrl = $(this).attr('href') ? $(this).attr('href') : $(this).data('href');
如果您想访问href
使用:
var href = $(this).attr('href');
而data-href
您可以使用:
var href = $(this).attr('data-href');
OR
var href = $(this).data('href');