2010-10-06 91 views
1

我有一个方法设置需要发出onChange用下面的代码:如何订阅一个方法来触发onchange和自定义事件?

var product = $('#selProduct:visible'); 
var note=$('#bbdata'); 

product.selectProduct({ 
    target: note, 
    url: 'product.php', 
    data: { ajax: true } 
}).trigger('change'); // TO DO: to fire also on visibility change 

然后,我有一个方法,我做一个div可见。

function show_product() { 
    hide_group2(); 
    $("#product_zone2").show('fast', function(){ 
    $("selProduct").trigger('isVisibleProduct');// custom trigger event 
    }); 
} 

我想更改方法定义以在我引发自定义事件时触发。我怎么做?

+0

我看不到你将事件处理程序绑定到任何事件的地方...... – 2010-10-06 07:14:25

+0

它是方法postfix上的'.trigger('change');'调用。 – Pentium10 2010-10-06 07:15:46

+0

但是,这是触发事件,而不是绑定处理程序。你说*我想改变方法定义,当我提高自定义事件时也会触发。*以某种方式转化为:当我激发自定义事件时,应该执行该方法。但是你想更改哪种方法,哪些方法在事件发生时应该执行?什么是'selectProduct()'? – 2010-10-06 07:17:46

回答

0

只需使用jQuery bind将您所需的功能链接到任何类型的事件(事件自定义)。

myObject.bind('myEventName', function(){/*..*/}); 

myObject.bind('myEventName', myFunctionName); 

然后用

myObject.trigger('myEventName'); 

触发如果你的情况,你可以把

product.bind('isVisibleProduct', function(){ 
    this.selectProduct({ 
     target: note, 
     url: 'product.php', 
     data: { ajax: true } 
    }).trigger('change'); // TO DO: to fire also on visibility change 
}); 
+0

'this.selectProduct({...])'我很确定这会发生一些错误。 ;) – Reigel 2010-10-06 07:34:46

+0

你为什么这么说? – 2010-10-06 07:44:25

2

有了这个代码

product.selectProduct({ 
    target: note, 
    url: 'product.php', 
    data: { ajax: true } 
}).trigger('change'); 

没有约束力selectProduct()要在change触发的事件。您只需执行selectProduct(),然后在product上触发change也许selectProduct()将事情绑定到change事件。但不知道它的作用,很难说。

如果要执行selectProduct()change事件和自定义事件,您必须将事件处理程序绑定到两个事件,就像这样:

product.bind('change isVisibleProduct', function() { 
    $(this).productSelect({/* ...parameters here ... */}); 
}); 

请澄清你的问题,如果这是不是你意思。

+0

第二部分很好,但我不太确定第一个假设,因为我没有任何其他绑定方法将selectProduct绑定到页面中的onchange事件。可能ajax方法的定义确实如此,但并不确定。 – Pentium10 2010-10-06 07:26:31

+0

+1我脑子里想的。 – Reigel 2010-10-06 07:27:57

+0

@ Pentium10:问题是,如果'selectProduct()'本身结合了一些方法,每次您再次执行功能,它会再次绑定这个方法,你不希望(除!)。 – 2010-10-06 07:28:21