jQuery prop方法无法在$(document).ready()之外工作

时间:2014-11-30 04:08:05

标签: javascript jquery

我希望更改使用输入标记

创建的按钮的文本

何时发表声明

$clearbutton.prop('value', "New Text For The Button");

位于

$(document).ready( function{  } );

它做得很好。

但是如果我在ready()

之外定义的函数中将相同的语句放在ready()之外

它不会执行

sendtext5 = "Bwahahaha";
sendtext4 = "Send Text 4";

$eraser.prop('value', sendtext5);       // NOT WORKING
$clearbutton.prop('value', sendtext5);  // NOT WORKING
$screen2top.text(sendtext4); // Works
$oneword.text(sendtext4);    // Works
alert("BEFORE CLEARBUTTON"); // Works 

HTML5是

<input type="button" data-role="button" id="clearbutton" class="eraser" value="Remo">

我也试过以下

$(".eraser").prop('value', sendtext5);  
$("#clearbuton").prop('value', sendtext5);  

但是当这些语句放在$ document.ready();

中时,上述两个语句中的任何一个都能正常工作

我也意识到sendtext5变量确实显示了正确的值。我用过alert(sendtext5);检查

2 个答案:

答案 0 :(得分:0)

我猜您的JS代码是否包含在页面顶部? JQuery Ready功能可以让您知道DOM何时就绪。如果JavaScript全部位于页面的底部,那么它将是相同的,因此您的代码将起作用。

或者,当您执行代码时,您还没有将$ eraser等分配给任何内容。

答案 1 :(得分:0)

当您加载网页时,通常会出现在HTML仍在加载时正在执行javascript的情况。如果浏览器在加载该元素之前为HTML元素执行jQuery选择器,则jQuery无需查找。 例如可以使用<div id="wrapper">...</div>引用$("#wrapper"),但如果引用在加载<div>之前运行,则无法找到任何内容。

jQuery的解决方案是:

$(document).ready(function() {
  //things to do when document has fully loaded
})

在你的情况下,一些选择器非常幸运,他们引用的元素恰好在这一行运行时加载了。