2016-04-18 59 views
0

我使用流星1.3,我必須在我的流星應用中集成一個「web模板」,這個「web模板」有一個custom.js文件,女巫包含j個查詢事件,但在集成了「web模板」之後,js文件中的這些事件只運行一次,是否有辦法解決這個問題,這個js文件包含很多行,將事件移動到我的「流星模板事件」中會非常複雜。 謝謝流星與jquery事件只運行一次

回答

1

問題是事件直接對您的模板內的DOM元素進行補償,當流星更改DOM元素時,綁定會丟失。

你要做的是使用委託事件,這是通過使用jquery .on()完成的。

你所要做的就是處理固定DOM元素中的事件,即「改變HTML」父項。當事件發生在這個元素內時,事件會「泡泡」到處理它的固定DOM元素。該事件攜帶有關啓動它的DOM元素的信息,因此on預訂可以調用正確的處理程序。

注意$('#fixedElement').on(event, selector, handler)指定:

  • 固定元素,將「抓住」冒泡事件
  • 你想要的事件來處理
  • 其過濾固定元素的後代元素選擇
  • 處理程序來執行

所以,你可以指定哪些事件處理哪個元素與哪個處理程序。這會在流星修改DOM後生效。

舉例來說,如果你有這樣的:

$('#btnOk').click(function() { alert('Clicked OK!`); }); 

你必須把它變成這樣:

$('#container').on('click', '#btnOk', function() { alert('Clicked OK!`); }); 

,因此,在與ID爲 '#btnOk' DOM元素是在'#cotnainer'裏面,處理程序將被執行,而不管之前存在的對象是存在還是正在被創建。

當然,您必須確保#container元素存在,並且不會被其他任何東西所取代。要做到這一點,也許你必須遍歷DOM樹,例如使用jQuery .parent()

+0

hanks,我試過了,但它不起作用。 $(myElementId).on('click',function(){//做一些事情}); – nemrrached

+0

您需要指定第二個參數。請參閱最新的答案。 – JotaBe

+0

Thnaks,它的工作 – nemrrached