JQuery 的 .prop() 不会设置属性

标签 jquery prop

我尝试使用 JQuery .prop() 函数向元素添加自定义属性,但无济于事。这是我尝试过的:

var header = $(document.getElementById("header-main"));
if (header.prop('error')) {
  //do something
}
else {
  $('#header-main').prop('error', true);
  header.prop('error', true);
  //neither of these change the element
  header.html('Changes some text'); //.html() actually seems to work.
}

自从阅读了 StackOverflow 上的文档和一些帖子后,我很困惑,但我似乎无法弄清楚问题所在。

我使用 JQuery 3.3.1 版是为了它的值(value)

最佳答案

您已在第一行回答了您的问题。

I'm trying to use the prop() function to add a custom attribute

prop() 设置属性,并且不存在“自定义属性”之类的东西。如果您想创建自定义属性,请使用attr() - 但我建议不要这样做,因为这是不好的做法。

更好的想法是将自定义信息存储在 data 属性中。换句话说,使用data()

var $header = $('#header-main');
if ($header.data('error')) {
  // do something
}  else {
  $header.data('error', true).html('Changes some text');
}

Can I still incorporate this without css? Right now I'm using css rules such as #header-main[error]

这里需要注意的一件事是 jQuery 的 data() 方法根本不影响 DOM。当您需要更新 DOM 以便 CSS 属性选择器正常工作时,请使用 attr('data-error') 来代替:

var $header = $('#header-main');
if ($header.attr('data-error') == 'true') { // ugly comparison, but not much we can do about it
  // do something
}  else {
  $header.attr('data-error', 'true').html('Changes some text');
}
#header-main[data-error] { 
  color: #C00;
}

关于JQuery 的 .prop() 不会设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51151903/

相关文章:

jquery - 我如何让我的 jquery 元素在几秒钟后停止消失?

jQuery 文件上传插件不起作用

javascript - jquery:如何选择属性名称中包含数组值的复选框?

javascript - 根据 prop 有条件地添加元素

javascript - 在 javascript 中将日期从 dd/mm/yyyy 转换为 yyyy-mm-dd

javascript - 如何更改 Click MVC 上的按钮文本?

javascript - 一种形式多种产品

javascript - 使用 JavaScript 获取用户代理

vue.js - Prop 在开发工具中显示,但在使用时显示未定义