10

似乎无法让这个工作......

我有一个隐藏某些链接的页面。加载 DOM 后,我使用 jQuery 来切换其中的一些元素。这是通过使用如下数据属性驱动的:

<div class="d_btn" data-usr='48'>
  <div class="hidden_button">

然后,我有代码:

  $.each($(".d_btn"), function() {
     var btn = $(this).data('usr');
   if ( btn == '48' ){      
     $(this).children('.hidden_button').toggle();
   }

以上所有工作按计划进行。问题是,一旦评估了 if 语句,我就试图从 .d_btn 类中删除 data-usr 。我尝试了以下方法,但没有任何效果(即,加载页面后,源仍然显示 data-usr 属性:

$(this).removeAttr("data-usr");

$(this).removeData("usr");

我已经为此工作了几个小时,但......什么都没有!非常感谢您的帮助!

更新

我已经尝试了将数据属性设置为空字符串的好建议,但我仍然没有得到想要的结果。

为了进一步解释,我试图删除该属性的原因是,当 ajax 响应向页面添加另一个项目时,先前添加的项目已经显示或隐藏了按钮。根据 AJAX 响应,一旦加载了 DOM,我将调用相同的函数。

目前,当通过 AJAX 添加某些内容时,它会切换所有按钮(显示隐藏的按钮,反之亦然。)呃......

我也完全愿意尝试替代我的方法。谢谢!

更新

好吧,灯泡刚刚闪烁,我可以通过使用 .show() 而不是 .toggle() 来做我想做的事

无论如何,我仍然想找到这个问题的答案,因为每当添加某些内容时,该页面可能会检查数百个项目 - 这似乎非常低效(即使对于计算机,哈哈哈。)

4

4 回答 4

9

如果 removeAttr 不起作用,为什么不将值设置为随机值或空变量。

$(this).attr("data-usr" , '');

$(this).prop("data-usr" , '');
于 2012-09-20T23:20:11.720 回答
7

更改 DOM 不会影响源。它会影响 DOM,您可以使用 Inspector/Developer Tools 查看。右键单击 => 查看源代码将为您提供页面的原始源代码,而不是 JavaScript 修改的实际当前源代码。

于 2012-09-20T23:20:13.487 回答
2

将其设置为空白字符串:

$(this).attr("data-usr", "");

我赞同 Kolink 所说的:检查 DOM,而不是源。(铬:Ctrl + Shift + i)。

于 2012-09-20T23:20:13.547 回答
0

正如其他人所说。检查来源只会显示网页的原始未经编辑的来源。您需要做的是使用开发人员工具检查 DOM。

我刚刚在 jsfiddle 上检查了 Chrome 的检查器中的所有内容,并且该属性和数据肯定都被删除了。

于 2012-09-20T23:46:53.017 回答