如何为attr方法设置第二个参数?

时间:2017-08-04 07:52:36

标签: jquery html

我有一个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');

此行必须同时hrefdata-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>

3 个答案:

答案 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');