2015-12-28 2 views
0

У меня есть HTML-страница posts.html в Framework7. Вот код JS для части posts.html.переопределить javascript в framework7

myApp.onPageInit('posts', function (page) { 
    openPostsPageFromDB(function(html){ 
     html = '<ul>'+html+'</ul>'; 
     $$(".posts-page div.posts").html(html); 
     pageJS(); 
    }); 
}); 
function pageJS(){ 
    $$(".post a,.post .post-channel-image,.post #tags").on("click",function(e){ 
     e.stopPropagation(); 
    }); 
} 

openPostsPageFromDB возвращает содержимое HTML после извлечения значений из БД. Я заменяю содержимое HTML posts.html соответствующим возвращаемым значением, а затем вызываю pageJS(), чтобы переопределить обработчик события click на некоторых элементах HTML.

Но события не перегружены, а обработчики событий, определенные по умолчанию в Framework7, запускаются. Есть ли какая-нибудь работа для этого?

+0

Ох. Это селектор Framework7. [framework7] (http://www.idangero.us/framework7/docs/dom.html) – skjindal93

ответ

1

Метод jQuery .on("click",function(e){}) просто добавляет еще один прослушиватель событий в очередь слушателей событий. Таким образом, в вашем случае, если вы хотите отменить все обработчики событий нажмите, вам нужно будет что-то вроде этого:

.unbind('click'); 

Update # 1

Метод unbind был depricated от JQuery 1.7, так вы должны использовать метод off.

.off('click'); 
+0

Но я делаю e.stopPropagation(); который должен остановить распространение события для детей, и, следовательно, событие не должно срабатывать, если я нажму на них. – skjindal93

+0

@ skjindal93 'e.stopPropagation()' вызывается, как только все остальные прослушиватели событий уже вызваны. Таким образом, вы не можете достичь своей цели, прекратив распространение. Вместо этого вы должны отключить _all_ click event listeners, чтобы отменить событие клика. –

Смежные вопросы