jQuery clone():这是firefox的错误还是我遗漏了什么

时间:2009-08-25 13:29:45

标签: jquery firefox

我对这个jQuery代码有疑问:

$(document).ready( 
  function(){  
    alert($('#search').val());  

    var dummyInput = $('#search').clone()
    .attr('id', 'search_watermark')
    .val('Search query')

    $('#search').before(dummyInput);
  }
);

$(window).unload(function(){
  $('#search_watermark').remove();
});

和HTML:

<form id='test_form' action='/test.php' method='post'>
  <label>Create New Team</label><br/>
  <input type='text' id='search' />
</form>

问题是:

我们只为输入字段的克隆赋值,而不是实际的输入字段。但是你会发现在Firefox中刷新页面时,实际输入字段的值已经改变了。这种行为是出乎意料的。

所有其他浏览器(FF除外)的行为符合预期。我在XP上使用FF 3.5。

2 个答案:

答案 0 :(得分:3)

我不得不围绕这个问题包围我的大脑,因为警报让我失望。为输入字段指定一些名称,当您执行克隆时,请为其指定一个不同的名称,即。+

var dummyInput = $('#search').clone()
.attr('id', 'search_watermark')
.val('Search query').attr( 'name', 'foo' );

Firefox会记住输入,它与JS无关。如果您进行完全刷新(+ Shift),它应该清除您发布的示例中的输入。

答案 1 :(得分:0)

页面刷新意味着页面被重新加载,因此所有JavaScripts将再次运行并且所有变量等都将丢失,因为页面再次从服务器加载。所以也许Firefox会记住一些值或类似的东西......