我在两个不同的表中使用了“toggle”类。我有一些jQuery代码可以来回切换跨越文本并且效果很好,但是我正在努力解决的问题是,如果单击一个,如何同时切换两个跨度,以便它们的文本相互匹配。
我尝试使用span[class='toggle']
作为onclick对象,希望能够同时选择它们并运行代码,但这不起作用
$("span[class='toggle']").on("click", function() {
var oldText = $(this).text();
var newText = $(this).data('text');
$(this).text(newText).data('text', oldText);
});
答案 0 :(得分:2)
假设我理解了您,并且您希望两者都切换到相同的值
替换: 的 $(本)的.text(newText)。数据( '文本',oldText); 强>
使用:
<强> $( “跨度[类= '切换']”)文本(newText)。数据( '文本',oldText); 强>
这会在点击其中任何一个时将两个跨度更新为新文本。
答案 1 :(得分:1)
您可以在点击回调函数中添加each()
循环,这样无论点击什么输入,您都可以为每个输入执行代码。请注意,$(this)
的上下文是循环中的当前元素,而不是单击元素Fiddle
$("span[class='toggle']").on("click", function() {
$("span[class='toggle']").each(function() {
var oldText = $(this).text();
var newText = $(this).data('text');
$(this).text(newText).data('text', oldText);
})
});
答案 2 :(得分:1)
易。
您只需将$(this)
替换为$("span[class='toggle']")
。
当您使用“点击”功能时。你调用$(this)这是点击的元素。这就是为什么你的文字只在一个 span 中改变的原因。
<强> JS 强>
$("span[class='toggle']").on("click",function () {
var oldText = $(this).text();
var newText = $(this).data('text');
$("span[class='toggle']").text(newText).data('text',oldText);
});
这是一个jsFiddle。
答案 3 :(得分:1)
这是一个很少修改的工作。 $(this).text(newText).data('text', oldText);
在此this
中使用click
引用当前span
$("span[class='toggle']").on("click",function () {
oldTxt = $(this).text();
newTxt = $(this).data('text');
console.log(oldTxt+" "+newTxt);
$("span[class='toggle']").text(newTxt).data('text', oldTxt);
});
课程文字。
span {
color: #18c;
cursor: pointer;
}
span:hover {
text-decoration: underline;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="table1">
<span class="toggle" data-text="Analysis View">Reports View</span>
</div>
<div id="table2">
<span class="toggle" data-text="Analysis View">Reports View</span>
</div>
&#13;
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
&#13;