【问题标题】:JQuery script doesn't work twiceJQuery脚本不能工作两次
【发布时间】:2012-08-26 02:34:57
【问题描述】:

我正在尝试在网站页面中创建测验。目的是每次您按下一步时,页面内都会打开一个新问题。但是,第二次调用该脚本不起作用。

为此,我首先创建了一个名为“下一步”的链接。

<a href="addquiz.html" name="next" id="1">Next</a>

这需要一个从 addquiz.html 打开 q1 的脚本

<script>
$("#1").click(function() {
$("#load").load("addquiz.html" + ' #q1');
event.preventDefault();
});
</script>

在这个脚本中有一个提交按钮,它调用函数 goupone,它将链接的 id 增加 1(例如,从 1 到 2)

<div id="q1">
<h3>5 + 19 = ?</h3>
    <input type="text" width="6" name="" id="question-1-answers" value="" />
    <input type="submit" value="Check" onClick="goupone();" />
</div>

<script>
function goupone(){
var v=document.links[9].id;
vi=parseInt(v);
vi=vi+1;
document.links[9].id=vi;
}
</script>

但是,当我再次单击下一步按钮时,什么也没有发生。有人可以帮忙吗?

【问题讨论】:

  • 只是想知道:你为什么写load("addquiz.html" + ' #q1');?不是和load("addquiz.html #q1");一样吗?当两个参数都是文字字符串时,使用连接有什么意义?另外,URL 中是否允许散列前的空格?我的猜测是大多数浏览器都会忽略它,但我不会依赖它,而且似乎没有必要。

标签: javascript jquery html numbers


【解决方案1】:

由于您将id1 更改为2,当您点击锚点时,初始点击处理程序$("#1").click()不再被触发。另一种方法是将事件处理程序绑定到属性namenexta

<script>
$('a[name="next"]').click(function() {
  $("#load").load("addquiz.html" + ' #q1');
  event.preventDefault();
});
</script>

或者创建一个类,比如next,将其添加到a,并将其用作选择器:

<a href="addquiz.html" name="next" id="1" class="next">Next</a>

<script>
$('a.next').click(function() {
  $("#load").load("addquiz.html" + ' #q1');
  event.preventDefault();
});
</script>

但是,我会重构您的整个代码以简单地使用以下代码:

<a href="addquiz.html" name="next" id="nextAnchor" data-next-id="1">Next</a>

<script>
$("#nextAnchor").on('click', function() {
  $("#load").load("addquiz.html#q" + $(this).data("next-id"));
  event.preventDefault();
});
</script>

function goupone() {
  var $next = $("#nextAnchor");
  var currentId = parseInt($next.data("next-id"));
  var nextId = currentId + 1;
  $next.data("next-id", nextId);
}

这是一个有效的DEMO

【讨论】:

  • 我认为这里的类比名称更合适。
  • 我将脚本重复 10 次,从 #1 到 #10,q1 到 q10
  • 不要忘记 id="1" 无效。 ID 必须以字母开头。
  • 班级会考虑有多个问题吗? (即在q1和q2分别加载后加载q2和q3的相同链接)
  • 是的,这就是使用类的意义所在。您可以将某些东西绑定到整个类,它的所有实例都会自动选择它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
  • 2011-07-28
相关资源
最近更新 更多