3

我有一个名为 locEmailMsg 的文本输入字段:

<input type="text"
       class="phColor"
       data-placeholder="Your email address"
       maxlength="50"
       style="font-size: 14px; width: 232px;"
       id="locEmailMsg">

在我的$(document).ready()函数中,我需要做一些事情:设置输入的值,设置数据占位符属性,并删除 phColor 类。

$('#locEmailMsg').val(localStorage.email);
$('#locEmailMsg').attr('data-placeholder', localStorage.email);
$('#locEmailMsg').removeClass('phColor');

data-placeholder 属性设置正确(在 Firebug 中观察),但没有设置值,也没有删除类。为什么一个部分有效,而其他部分无效?

这是一个非常大的系统的一部分,但我已经在页面加载时逐步执行了所有脚本,并且在这个调用反转值集/类删除之后没有发生任何事情。

4

2 回答 2

4

它可以在这里与您的代码一起使用。

http://jsfiddle.net/bWm2c/1/

但是,如果再次出现具有相同 id 的项目,则只有第一个会受到影响。看这里:

http://jsfiddle.net/bWm2c/2/

输入与否无关紧要。ID 必须是唯一的。

我把它设置为超时,所以你可以看到变化

window.setTimeout(function() {
    var localStorage = { email: 'foo@bar.com' };

    $('#locEmailMsg')
        .val(localStorage.email)
        .attr('data-placeholder', localStorage.email)
        .removeClass('phColor');
}, 500);
​

这是失败的html(仅影响第一项)

<input type="text"
       class="phColor"
       data-placeholder="Your email address"
       maxlength="50"
       style="font-size: 14px; width: 232px;"
       id="locEmailMsg"
       value="novalue" />

<div id="locEmailMsg">dupid</div>

<input type="text"
       class="phColor"
       data-placeholder="Your email address"
       maxlength="50"
       style="font-size: 14px; width: 232px;"
       id="locEmailMsg"
       value="novalue" />
​

这是我看到您的代码不起作用的唯一方法。

编辑

在您的页面上运行此命令以确保您没有重复的 ID

http://jsfiddle.net/bWm2c/4/

$('[id]').each(function(){
  var ids = $('[id="'+this.id+'"]');
  if(ids.length>1 && ids[0]==this)
    alert('Multiple IDs #'+this.id);
});
​
于 2012-10-23T20:30:07.033 回答
2

您的代码看起来不错,应该可以正常工作..如果它不起作用,那么一定有其他问题可能会干扰该行..

我会尝试跟随以检查失败的地方,

  1. console.logalertvaluelocalStorage.email以查看该值是否正确。
  2. 尝试document.getElementById('locEmailMsg').value = localStorage.email;确保它不是 jQuery 问题。
于 2012-10-23T21:53:00.983 回答