可以在Jquery中将选择器与bind和trigger一起使用

时间:2011-12-01 20:26:04

标签: jquery

我试图在jQuery中使用带触发器和绑定的选择器。它是一个简单的代码,我似乎无法让它工作:(。

这就是我在做什么。

$(document).ready(function (){

var ctrlChanged = jQuery.Event("CtrlChanged");

  //********** Any time a button with id*=btnAddNewEmailAddress is clicked, raise event that parent control has changed.
$('[id *= "btnAddNew"]').click(function () {
  $('[id *= "btnAddNew"]').trigger(ctrlChanged);
});
});

要订阅以上活动,我使用以下代码。

$('[id *= "btnAddNew"]').bind('CtrlChanged', function(){alert('Control Changed')})   

这种组合不起作用。当我点击id为“btnAddNew”的按钮时,我看不到警告信息。

但是如果我用

之类的东西替换[id * =“btnAddNew”]
$('body').trigger('ctrlChanged')

然后绑定

的相应变化
$('body').bind('ctrlChanged', function(){alert('Control is changed'})

就像魅力一样。

我想知道,触发器和绑定是否适用于选择器。我会这么认为......但他们不是......

如果是,那么我做错了什么?

1 个答案:

答案 0 :(得分:0)

我会改变这个:

$('[id *= "btnAddNew"]').click(function () {
  $('[id *= "btnAddNew"]').trigger(ctrlChanged);
});

$('[id *= "btnAddNew"]').click(function () {
  $(this).trigger(ctrlChanged);
});

您可能还必须将ctrlChanged事件对象移动到全局范围;即将它移到$(document).ready()之外,就在好之前。