我很难用if和else条件来实现jQuery的".one“方法。无论条件是真还是假,我只需要执行这个单击函数一次。
请检查下面的代码以简化我的问题。
$("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>
发布于 2016-09-12 12:38:40
在您的例子中,您有两个span标记。因此,您为这两种情况都附加了事件one。
这句话:
$("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>
发布于 2016-09-12 12:38:26
$("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>
https://stackoverflow.com/questions/39450348
复制相似问题