我正在尝试基于jQuery点击事件替换h3标记中的文本。然而,我的代码不起作用,如果我在click事件中放入一条alert语句,我可以看到我在函数中做出了反应,但无法执行text()调用。
标题HTML标记
<div class="section margin-top-50">
<h3 id="page_header" class="section-height"><?php echo $this->translate('Text_1'); ?></h3>
</div>
菜单HTML标记(我定义点击事件的地方)
<ul id="myTab" class="nav nav-layout-sidebar nav-stacked">
<li class="active">
<a href="#mood-graph" data-toggle="tab">
<?php echo $this->translate('Text_1') ?>
</a>
</li>
<li>
<a href="#quick-mood-stats" data-toggle="tab">
<?php echo $this->translate('Text_2') ?>
</a>
</li>
<li>
<a href="#mood-rating" data-toggle="tab">
<?php echo $this->translate('Text_3') ?>
</a>
</li>
</ul>
JS-
$(document).ready(function() {
$("ul#myTab li:nth-child(1)").click(function() {
alert('clicked 1');
$("#page_header h3").text("<?php echo $this->translate('Text_1'); ?>");
});
$("ul#myTab li:nth-child(2)").click(function() {
alert('clicked 2');
$("#page_header h3").text("<?php echo $this->translate('Text_2'); ?>");
});
$("ul#myTab li:nth-child(3)").click(function() {
alert('clicked 3');
$("#page_header h3").text("<?php echo $this->translate('Text_3'); ?>");
});
});
更改此-
$("#page_header h3")
到这个-
$("#page_header")
您的第一个选择器正在查找作为page_header的子级的h3。它们实际上是同一个,您只需要使用ID即可进行更改。
您不能从JavaScript调用PHP。为了完成这样的事情,你需要AJAX,但我认为这对我认为你正在尝试做的事情没有必要
为每个锚点添加一个类"toggleHeader"。然后:
$(document).ready(function() {
$('a.toggleHeader').on('click', function() {
$('#page_header').html( $(this).html() );
});
});
当您只需抓取单击的锚点的内容时,无需按每个锚点将其分解