我试图弄清楚如何在一个事件处理程序中生成这些代码。。。因此,它知道点击了哪个元素,然后对正确的元素执行right.text操作。有什么想法吗?:)
$(document).ready(function(){
$("#knapp1").on("click", function(){
$("#hund").text("Voff!");
});
$("#knapp2").on("click", function(){
$("#katt").text("Miau!");
});
$("#knapp3").on("click", function(){
$("#gris").text("Nöff!");
});
});
我不知道我是否明白了这个想法,你的意思是这样的吗:
####HTML<div id="group1">
<span id="knapp1" data-content="Voff!">hund</span>
<br />
<span id="knapp2" data-content="Miau!">katt</span>
<br />
<span id="knapp3" data-content="Nöff!">gris</span>
</div>
<div>
<span id="hund"></span>
<br />
<span id="katt"></span>
<br />
<span id="gris"></span>
</div>
#####JAVASCRIPT$(document).ready(function(){
$("#group1 span").on('click', function() {
selectorid=$(this).text();
texttoput=$(this).attr("data-content");
$("#"+selectorid).text(texttoput);
});
});
请参阅JsFiddle:https://jsfiddle.net/skfd8b84/
只需使用一个类,并添加一些内部逻辑。例如,使用data-*
属性将是最干净的:
<button class="knapp" data-target="targetid" data-text="new text">click me!</button>
这里有一个演示:
$(document).ready(function(){
$(".knapp").on('click', function() {
var $this = $(this), // so I only call $(this) once
target = $this.data('target'), // grab target
text = $this.data('text'); // grab text
$(target).text(text); // finally, execute
});
});
* { font-family: sans-serif; }
button { background: white; border: 1px solid #c1c1c1; border-radius: 3px; padding: 5px; }
div { margin: 5px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="knapp" data-target="#hund" data-text="Voff!">Dog goes</button>
<button class="knapp" data-target="#katt" data-text="Miau!">Cat goes</button>
<button class="knapp" data-target="#gris" data-text="Nöff!">Gris(?) goes</button>
<div>
<span id="hund">hund</span>
<br />
<span id="katt">katt</span>
<br />
<span id="gris">gris</span>
</div>
使用jQuery,可以使用逗号组合选择器。它可能看起来像这样:
$(document).ready(function(){
$("#knapp1, #knapp2, #knapp3").on("click", function(){
//`this` now refers to the element that was clicked.
});
});
根据您的情况,这可能更适合类位于这些元素上。
然后,您可以使用HTML中的数据属性来处理正确的操作:
<div id="knapp1" data-animal="hund" data-animal-sound="Voff"></div>
这样您就可以设置正确的值:
$(document).ready(function(){
$("#knapp1, #knapp2, #knapp3").on("click", function(){
var animal = $(this).data('animal');
var sound = $(this).data('animal-sound');
$("#"+animal).text(sound+"!");
});
});