【发布时间】:2015-07-28 13:48:45
【问题描述】:
我知道 javascript 中的范围有时很难,但这次我怀疑问题可能是 jQuery 执行顺序。在下面的代码中,我尝试在 javascript 中定义一个简单的 HTML 元素(模拟按钮),并在使用 jQuery 在 HTML 中安装它时将不同的文本传递给它:
var name;
var buttonsecondary = '<div class="buttonsecondary clicked"><p>'+name+'</p></div>';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="content-item" id="things4">
<a href="aFabrica.html">
<div class="itemHome">
<div class="bg" id="buttonsecondaryfabrica"></div>
<script>
$(document).ready(function() {
var name = "A Fábrica";
$("#buttonsecondaryfabrica").after(buttonsecondary)
})
</script>
</div>
</a>
</div>
<div class="content-item">
<a href="lojas.html">
<div class="itemHome">
<div class="bg" id="buttonsecondaryloja"></div>
<script>
$(document).ready(function() {
var name = "Loja";
$("#buttonsecondaryloja").after(buttonsecondary)
})
</script>
</div>
</a>
</div>
问题是我在两个按钮上得到相同的文本:“商店”虽然在第一个警报中获得“街道”,而在第二个“商店”中...... 有人知道怎么解释吗?
【问题讨论】:
-
您可能需要使用匿名函数将按钮添加到 DOM。
-
@atmd:或者更好的是,这里有一个堆栈片段。
-
因为你在改变
name和buttonsecondary保持不变 -
尝试只使用一个 $(document).ready(
-
@梦想家约瑟夫 谢谢!我正在努力格式化它并放弃了......
标签: javascript jquery scope