2010-10-06 35 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