此代码:
$(文件)。就绪(函数(){
$( '身体')。点击(函数(EVT){
如果(evt.target.nodeName === 'A' && $(evt.target).hasClass( '交联')){
$( '一个[HREF =#2]')的触发器( '点击');
}});});
给予“太多递归”的我和错误
有人可能会认为我应该附加一个处理程序,以交联的元素。 我想这一点,但我无法得到它的工作,因为在创建交叉连接类元素的前负荷DOM。 什么才是我需要做什么来解决这个问题还是有我应该做的,以实现我想要做一个更好的主意吗?
如果你想看到错误的自己,做在搜索栏中选择狗全能的一个“d”到eataustineat.com/testfolder/类型(这是你应该注意到了“太多的递归错误”,它将移动DIV到左侧,但它会这么做很buggily。
您可以使用live
或delegate
添加监听器以后创建的元素:
$("a.cross-link").live("click", function()
{
$('a[href=#2]').trigger('click');
window.location.hash = "#2";
});
然而,点击不会触发要去的URL的默认事件,所以你需要做手工。
如果需要一个现有的事件元素创建文件后添加,您可以使用现场
$(document).ready(function() {
$('.cross-link').live(function() {
$('a[href=#2']).click(); //No cross-link class allowed on this element as it is responsible for the recursion
});
});
那么递归来自触发
$('a[href=#2]').trigger('click');
当这个元素从事件点击它扔又将由相同的代码来处理等其他事件。
这应该工作:
$(document.ready)(function(){
$('.cross-link').click(function(){
#('a[href=#2').click();
});
});
同时性能方面也更加优化的一个ID添加到你的第二个链接,因为通过一个id选择比按属性选择速度更快。 如果你还想去与HREF选择和只存在一个这样的环节做的:
#('a[href=#2 :first').click();
对于全球化志愿服务青年到这上面我的意见是我做到了。 我建议使用活寿...
var open = function (myObj, animationTime) {
//do stuff
$(myObj).unbind('click');
$(myObj).click(function () {
close(myObj, timer);
});
}
var close = function (myObj, animationTime) {
//dostuff
//remove close click event and then rebind the click event to open
$(myObj).unbind('click');
$(myObj).click(function () {
open(myObj, timer);
});
}
$(".mySelector").click(function () {
open($(this), timer);
});
$('body').click(function(evt) {
if(evt.target.nodeName === 'A' && $(evt.target).hasClass('cross-link')) {
$('a[href=#2]').trigger('click');
}
});
你错过了else
的if-else
语句。