korzystam ze skryptu multibox http://www.liamsmart.co.uk/Downloads/multiBox/ na stronie mam kilka linków które zmieniają się dynamicznie za pomocą request. Zanim wykona się request linki działają. Natomiast po wykonaniu requesta już nie działają. Jak dowiedziałem się na tym forum trzeba wykorzystać LiveEvent. Tak też zrobiłem, w kawałku kodu:
Kod
this.content.each(function(el,i){
//now we are left with each group as arrays
el.each(function(group,i){
//add event listener
group.addEvent('click', function(e){
var myTarget = ($(e.target).match('a')) ? $(e.target) : $(e.target).getParent('a');
e.preventDefault();
this.open(el.indexOf(myTarget),el);
}.bind(this));
//check to see if link is an HTML element
if(group.href.indexOf('#') > -1){
//grab it as an object
group.content = $(group.href.substr(group.href.indexOf('#')+1));
//hide the object
if(group.content){
group.content.setStyle('display','none');
};
};
},this);
},this);
//now we are left with each group as arrays
el.each(function(group,i){
//add event listener
group.addEvent('click', function(e){
var myTarget = ($(e.target).match('a')) ? $(e.target) : $(e.target).getParent('a');
e.preventDefault();
this.open(el.indexOf(myTarget),el);
}.bind(this));
//check to see if link is an HTML element
if(group.href.indexOf('#') > -1){
//grab it as an object
group.content = $(group.href.substr(group.href.indexOf('#')+1));
//hide the object
if(group.content){
group.content.setStyle('display','none');
};
};
},this);
},this);
linię
Kod
group.addEvent('click', function(e){
zamieniłem na
Kod
$(document.body).addLiveEvent('click', group, function(e){
Skrypt działa tak jak działał wcześniej, ale po kliknięciu w link dostaję błąd:
Cytat
B.match is not a function
mootools-1.2.1-core.js
Line 232
mootools-1.2.1-core.js
Line 232
232 Linia kodu:
Kod
}return Selectors.Cache.parsed[E]=H;},parseTagAndID:function(B){var A=B.match(Selectors.RegExps.tag);var C=B.match(Selectors.RegExps.id);return[(A)?A[1]:"*",(C)?C[1]:false];