编程语言
首页 > 编程语言> > Javascript代码设计帮助

Javascript代码设计帮助

作者:互联网

我正在使用jQuery编写脚本,以将多个控制框(divs)添加到网页.这些div包含诸如close,prev,next,search之类的控件(锚).代码示例:

$div_overlay = 
    $('<div></div>')
    .addClass('overlay')
    .append($('<div></div>')
        .addClass('text_controls')
//The onClick method below works perfect but not .click() of jQuery(due to the way 'index' is used)
        .append($('<a onClick="overlay_hide('+index+'); return false;"></a>')
            .addClass('close')
            .attr('href','#')
            /*.click(function(){
//The 'index' gets incremented as divs are created and hence a wrong value(the last one) is passed irrespective of the div clicked 
            overlay_hide(index)
            })*/
        )

“索引”是一个全局变量,用于跟踪创建的“覆盖” div.
它随着div的创建而增加,并且每个div都在创建时被推入数组中.因此,“索引”基本上是div的数组索引.

为简单起见,我仅添加了“关闭”锚点. $div_overlay在函数中,每次单击图像时都会调用该函数.

我的问题是要处理锚点的点击事件,例如“关闭”.我想使用全局变量“ index”来确定单击锚的div.

我希望能够传递对执行关闭操作的div的引用.如果我使用上面代码中注释过的jQuery click方法来关闭div,它将最后一个索引值作为参数传递给overlay_hide()(因为在创建div时索引会增加).如果我使用上面的onClick方法,则可以通过传递正确的索引值来正常工作.

那么,如何使用索引识别这些div,并能够根据单击的div控件唯一地访问它们? (可能需要使用对象,但我不确定.)

一种方法是让被单击的锚点的父项靠在一起,但我不想那样做,而是想使用索引.

解决方法:

您可以使用data属性将元数据添加到锚点.

$('<a data-index="' + index + '"></a>').click(function(){
    var data = $(this).data();
    overlay_hide(data.index); // note index will be a string
    return false;
});

您可以使用的另一种方法是关闭click函数:

$('<a />').click(function(i){
    return function(e){
        // use i here this is the callback.
        overlay_hide(i);
        return false;
    };
}(index)); 

我还要指出的是,您添加了一个id .attr(‘id’,’overlay’)-并且id在整个DOM中必须是唯一的.

标签:dom,javascript-events,javascript-framework,javascript,jquery
来源: https://codeday.me/bug/20191208/2092597.html