存储“click”事件的jQuery元素不能按要求工作

时间:2014-12-28 15:30:21

标签: javascript jquery html

我的APP开发之一需要

我克隆了link 3次并存储到一个对象中。在我存储到对象后,我已经将一些点击事件添加到存储对象的link元素。

我有一个导航链接,当用户点击导航号时,我将存储的元素附加到容器。

一切正常。问题是:

click的{​​{1}}事件仅适用于页面加载。将其他存储对象改组为容器后,它无法正常工作。

如何解决这个问题。一切都消失了。 link事件无法进一步发挥作用。

这是我的js:

click

Live Demo

我需要的是:

  1. 我应该点击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(); 元素点击导航按钮

  2. link的班级名称应继续

  3. 添加的事件应该继续。

  4. 先谢谢。

1 个答案:

答案 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();

FIDDLE