我正在努力实施jQuery" .one" if和else条件的方法。我只需要执行一次click函数,无论条件是真还是假。
请检查以下代码以简化我的问题。
$("span").one("click", function () {
var ind = $("span").index($(this));
if (ind == 0) {
alert ("clicked 1st element");
}
else {
alert ("clicked 2nd element");
}
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>1st click element</span><br>
<span>2nd click element</span>
&#13;
答案 0 :(得分:1)
在您的情况下,您有两个span标记。因此,您为两者附加了一个事件。
该行:
$("span").one("click", function () {
与以下两行“等效”:
$("span:eq(0)").one("click", function () {
$("span:eq(1)").one("click", function () {
这就是因为你收到了两件事。
如果你想停止第二个事件并且只获得第一个事件,你可以考虑删除事件处理程序:
$("span").one("click", function () {
// remove the event for the second span...
$("span").off("click");
var ind = $("span").index($(this));
if (ind == 0) {
alert ("clicked 1st element");
}
else {
alert ("clicked 2nd element");
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<span>1st click element</span><br>
<span>2nd click element</span>
答案 1 :(得分:0)
$("span").one("click", function () {
var ind = $("span").index($(this));
var getRes = (ind == 0) ? alert ("clicked 1st element") : alert ("clicked 2nd element");
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>1st click element</span><br>
<span>2nd click element</span>