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