我的APP开发之一需要
我克隆了link
3次并存储到一个对象中。在我存储到对象后,我已经将一些点击事件添加到存储对象的link
元素。
我有一个导航链接,当用户点击导航号时,我将存储的元素附加到容器。
一切正常。问题是:
click
的{{1}}事件仅适用于页面加载。将其他存储对象改组为容器后,它无法正常工作。
如何解决这个问题。一切都消失了。 link
事件无法进一步发挥作用。
这是我的js:
click
我需要的是:
我应该点击var listLength = $('li').length;
var origional = $('.content');
var catcheEl = {};
for(i=1;i<= listLength;i++){
catcheEl['content'+i] = origional.clone();
var link = $(catcheEl['content'+i]).find('a').addClass('link'+i);
addEvent(link);
}
function addEvent (link) {
var x = 0;
link.click(function(e){
e.preventDefault();
x++;
console.log(x);
$(this).addClass('p'+x); //only adds on page load.
});
}
$('li').click(function(){
var num = $(this).find('button').prop('class');
$('#newContainer').html(catcheEl['content'+num]); //not working once other elements loaded.
});
$('.content').hide();
元素点击导航按钮
link
的班级名称应继续
添加的事件应该继续。
先谢谢。
答案 0 :(得分:1)
编辑新答案
我不喜欢它,因为它依赖于类值(你应该做一些安全检查,但是...基本上我已经编辑了你定义x
的方式,所以我检索了所有的类a,拆分它们,检查阵列的长度。
然后,如果它是1
(仅link
类)或0
(不知道,以防万一)或不是数组,则设置0
否则检索最后一个数组元素并删除所有非数字数字(希望,不知道空字节或类似的有趣的家伙)。
var listLength = $('li').length,
origional = $('.content'),
catcheEl = {};
function addEvent(link) {
//Define the x variable
var v=link.attr('class').split(/\s+/),
l=v.length,
x= (v.constructor === Array && (l==1 || l===0))? 0:parseInt(v[l-1].replace(/\D/g,''));
link.click(function (e) {
e.preventDefault();
x++;
$(this).addClass('p' + x);
});
}
for (i = 1; i <= listLength; i++) {
catcheEl['content' + i] = origional.clone();
var link = $(catcheEl['content' + i]).find('a').addClass('link' + i);
addEvent(link);
}
$('li').click(function () {
var num = $(this).find('button').prop('class');
$('#newContainer').html(catcheEl['content' + num]);
addEvent($(catcheEl['content' + num]).find('a')); //Re-bind the event
});
$('.content').hide();