到目前为止,我知道我们可以使用:
将数据存储在html元素中<div data-test="hello">
$.("div").data("test")
但是,我只能存储数据属性的原始文本
我需要的是:
var t= hello
<div data-test=t>
但是当我尝试此操作时,会显示字母t
而不是hello
。
答案 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()
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;
答案 3 :(得分:0)
var t="hello";
$("div").attr("data-test",t);
答案 4 :(得分:0)
<div data-test="hello">
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
。