Javascript 如何向无序列表中的href链接添加单击方法?

Javascript 如何向无序列表中的href链接添加单击方法?,javascript,jquery,Javascript,Jquery,我试图在一个无序的列表中建立一个可点击项目的菜单。无论我放置什么元素,我都会使用列表项进行包装,不会触发我提供的click回调方法 这里我使用href elememt trackDeleteButton = $('<a href="#">DELETE</a>')[0]; $(trackDeleteButton).click(function () { myself.browser.removeTrack(myself.track); igv.popover

我试图在一个无序的列表中建立一个可点击项目的菜单。无论我放置什么元素,我都会使用列表项进行包装,不会触发我提供的click回调方法

这里我使用href elememt

trackDeleteButton = $('<a href="#">DELETE</a>')[0];
$(trackDeleteButton).click(function () {
    myself.browser.removeTrack(myself.track);
    igv.popover.hide();
});

单击方法是从不调用。为什么?解决方法是什么。

这是正常行为,因为在元素之前加载的脚本使用on方法附加事件

$("parent").on("click", "your item selector", someFunction);

someFunction(e){

   e.preventDefault() || return false - to prevent normal behavior of a elem
}

我不确定您想要做什么,但下面的代码显示了如何动态地将单击处理程序添加到li元素中的链接:

$(函数(){
var-elNo=0;
var$list=$(“#dynamicList”);
$('#addElement')。在('click',function()上{
$newLi=$('
  • ',{text:elNo}).appendTo($list); $delLink=$('',{href:'#',文本:'delete',类:'remove'}); $delLink.on('click',function(){ $(this).最近('li').remove(); }); elNo++; }); });
    
    添加列表项
    

    您可以提交您的html吗?如果您在将项目插入dom之前注册侦听器,它将不会触发。单击()
    。在('click','selector',callback)
    上进行操作将对您有效。另外,
    trackDeleteButton
    已经用jquery包装好了,因此您应该能够调用
    trackDeleteButton.on()
    为什么从jquery对象获取底层dom元素只是为了在jquery中重新包装它?ie
    listItem=$(“
  • ”)[0]$(listItem).追加…
  • Shan,不确定单击()是否正确。我的代码向元素注册了一个点击处理程序。单击元素时,将激发方法。不需要在(…)上使用。包装/展开是不必要的(我是一个iOS开发人员,对JS/jQuery还是新手),但与我的问题无关。实际上,我所有的JS都是通过$(document.ready(function(){…})加载的。不同的是,在加载DOM后,您会插入额外的html并尝试将事件绑定到它,但此html未加载,因此请使用事件委派来实现您想要的…好的,让我看看是否得到了此消息。显示的将click方法分配给trackDeleteButton的代码行实际上不会发生,因为trackDeleteButton未插入其中DOM yet.Correct?SmileOff,对于上下文,DOM插入发生在函数igv.popover.presentTrackMenu(…)。如果你对你的解决方案多做一点描述,我会给你这个。Sry,我现在没有pc给你更复杂的答案,但你做对了,只需将你的事件绑定到已经存在的元素上,这些元素不是用你的脚本生成的,试着阅读查询官方文档中的事件委派,只有一页有示例,g祝你好运
    ["foxtrot", "bravo", "lima"].forEach(function (item, i, items) {
        acc.push('<li>' + item + " " + i + '</li>');
    });
    
    $(unorderedList).append( acc.join('') );
    
    igv.popover.presentTrackMenu(e.pageX, e.pageY, $(unorderedList));
    
    $("parent").on("click", "your item selector", someFunction);
    
    someFunction(e){
    
       e.preventDefault() || return false - to prevent normal behavior of a elem
    }