jQuery两个不同的id触发相同的功能

时间:2016-04-15 18:21:33

标签: javascript jquery

有2个ID#firstTableTotal,#secondTableTotal和1个功能contentchanged。如何使两个id(#firstTableTotal,#secondTableTotal)使用相同的函数(contentchanged)。我尝试使用以下代码,但结果与预期不符。

$('#firstTableTotal').trigger('contentchanged');
$('#secondTableTotal').trigger('contentchanged');

$(document).on('contentchanged', '#firstTableTotal #secondTableTotal', function() 
{alert("Calculations go here");
});

4 个答案:

答案 0 :(得分:2)

如上所述,你甚至在绑定它之前就已经将这个事件搞砸了......另一个问题是你的选择器......每个ID之间必须有一个逗号。否则这个意思就是父子组合。

应该是

'#firstTableTotal, #secondTableTotal'

现在你所拥有的实际意味着选择标识为secondTableTotal的元素,该元素是ID为firstTableTotal的元素的子元素。在您的代码中不是这种情况。

您的目标是针对这两个要素。所以在它们之间放一个逗号。这使选择器选择两个不同的元素。

答案 1 :(得分:0)

这是因为你甚至在绑定之前就触发了event

还可以使用逗号分隔2个不同的选择器

$(document).on('contentchanged', '#firstTableTotal, #secondTableTotal', 

答案 2 :(得分:0)

如果contentchangedevent

var myFunc = function(){
  alert("Calculations go here");
};

$('#firstTableTotal').on('contentchanged', myFunc);
$('#secondTableTotal').on('contentchanged', myFunc);

//Some time later
$('#firstTableTotal').trigger('contentchanged');
$('#secondTableTotal').trigger('contentchanged');

如果contentchanged实际上是function

var contentchanged = function(){
  alert("Calculations go here");
};

$('#firstTableTotal').on('some_event', contentchanged);
$('#secondTableTotal').on('some_event', contentchanged);

//Some time later
$('#firstTableTotal').trigger('some_event');
$('#secondTableTotal').trigger('some_event');

答案 3 :(得分:-1)

如果你有一个名为contentChanged的函数: var contentchanged= function () { //do something} 然后你可以简单地为每个DOM节点添加一个监听器。 $('#firstTableTotal').on(eventNameHere, contentchanged); $('#secondTableTotal').on(eventNameHere, contentchanged);

最好将侦听器直接附加到节点,这样当从DOM中删除节点时,侦听器也将被垃圾收集。如果将监听器添加到窗口,就像您当前正在执行的那样,则需要手动将其删除才能进行垃圾收集。