我有一个JQuery脚本,在两个不同的位置有两个看似相同的点击处理程序。但是当我点击相应的按钮时,只有一个被触发。这是为什么?
{-# LANGUAGE ScopedTypeVariables #-}
import Prelude (Eq, Enum, Num, Ord, snd, (==), (<$>))
import Data.List (head, group, sort, zip)
f :: forall a. (Eq a, Enum a, Num a, Ord a) => a -> [a] -> [a] -> [a]
f replacement indices values =
go (head <$> group (sort indices)) (zip [0..] values)
where
go :: [a] -> [(a, a)] -> [a]
go [] vs = snd <$> vs
go _ [] = []
go (i:is) ((i', v):vs) | i == i' = replacement : go is vs
go is (v:vs) = snd v : go is vs
只有&#39;处理程序1&#39;被叫。无法弄清楚为什么。两者似乎完全一样。
答案 0 :(得分:1)
处理程序2不会触发,因为它是在页面初始化时设置的,因此计数将等于零,并且没有#addThisNumber0输入。要解决此问题,您可以进行以下更改:
var count = 0;
$("#add").click(function(){
count++;
$("#numberFields").append('<input class='addThisNumber' type="button" id="addThisNumber'+ count +'">');
//Handler 1
$("#numberFields").on('click', "#addThisNumber"+count, function(){
console.log("Handler 1" + count);
});
});
//Handler 2
$("#numberFields").on('click', ".addThisNumber", function(){
console.log("Handler 2" + count);
});