我们可以将变量传递给html的数据属性

时间:2017-09-05 07:16:03

标签: javascript jquery html web attributes

到目前为止,我知道我们可以使用:

将数据存储在html元素中
<div  data-test="hello">
$.("div").data("test")

但是,我只能存储数据属性的原始文本

我需要的是:

var t= hello
<div data-test=t>

但是当我尝试此操作时,会显示字母t而不是hello

5 个答案:

答案 0 :(得分:4)

实际上,您不是更改attribute而是更改DOM对象的属性。对于data,JavaScript拥有自己的机制来保存元素的data。有关详情,请查看Documentation

您可以使用data更改jQuery(因为您已经使用过它)。使用data函数并将您的变量作为第二个参数传递给函数,如$("#d").data("test", t);

console.log($("#d").data("test"));

const t = 'hello';
$("#d").data("test", t); // <- second parameter

console.log($("#d").data("test"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="d" data-test="test">

答案 1 :(得分:0)

是的,你可以试试这个:

$scope.sendMail = function(){   

$scope.uploadFiles = function(file) {
    $scope.attach = file;
    file.upload = Upload.upload({
        data: {file: file} 
    });
}

$scope.emailData = new EmailData();
$scope.emailData.to = "myMail@a.com";       
$scope.emailData.from = "yourMail@a.com";
$scope.emailData.type = "TYPE";
$scope.emailData.title = $scope.data.title;
$scope.emailData.descr = $scope.data.description;
$scope.emailData.template = "template";
$scope.emailData.file = $scope.attach;

$http.post("sendemail", $scope.emailData, {headers: {'Content-Type': 'application/json'} })
.then(function (response) {         
    $scope.succes =  true;
},
function(fail) {
    $scope.error = true;
});
}

答案 2 :(得分:0)

您可以使用JQuery的attr()功能代替data()

&#13;
&#13;
var t= 'hello';
$("div").attr("data-test",t);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div  data-test=t>asd
&#13;
&#13;
&#13;

答案 3 :(得分:0)

var t="hello";
$("div").attr("data-test",t);

答案 4 :(得分:0)

没有jQuery

在这种情况下,jQuery绝对没有必要。您可以使用此代码实现相同的功能

HTML

<div data-test="hello">

JS

const textToChange = 'other text';
const divWithDataAttribute = document.querySelector('[data-test]');
diveWithDataAttribute.dataSet.test = textToChange;

结论

这会将新结果应用于data属性,我们不需要jQuery。

需要注意的是,dataSet.test部分来自data-test属性。我们删除了data-部分和驼峰案例的其余部分。

例如,data-test-new-test="whatever"在访问dataSet时变为testNewTest