需要为“onload”调用脚本而不仅仅是“模糊”

代码是:

$(document).ready(function () { $('#url0, #url1, #url2, #url3, #url4, #url5, #url6, #url7, #url8, #url9, #url10').each(function(index, element) { $(element).blur(function() { var vals = this.value.split(/\s+/); var $container = $(this).hide().prev().show().empty(); $.each(vals, function(i, val) { if (i > 0) { $(" ").appendTo($container); } $("") .html(val) .attr('href',/^https?:\/\//.test(val) ? val : 'http://' + val) .appendTo($container) .click(handleClickEvent); }); }); }).trigger('blur'); // ms to wait for a doubleclick var doubleClickThreshold = 300; // timeout container var clickTimeout; $('.aCustomDiv a').click(handleClickEvent); $('.aCustomDiv').click(handleDivClick); function handleClickEvent(e) { var that = this; var event; if (clickTimeout) { try { clearTimeout(clickTimeout); } catch(x) {}; clickTimeout = null; handleDoubleClick.call(that, e); return false; } clickTimeout = setTimeout(function() { clickTimeout = null; handleClick.call(that, event); }, doubleClickThreshold); return false; } function handleDivClick(e) { var $this = $(this); $this.parent() .find('input,textarea') .show() .focus(); $this.hide(); } function handleDoubleClick(e) { var $this = $(this).parent(); $this.parent() .find('input,textarea') //.val($a.text()) .show() .focus(); $this.hide(); } function handleClick(e) { window.open(this.href, '_blank') } }); 

HTML代码:

 

此脚本执行以下操作:

  1. 将文本转换为这些ID的url(url0 …)
  2. 双击链接使其可编辑
  3. 单击div区域,在链接旁边使其可编辑
  4. 单击链接=>转到页面

我的问题 :由于某些原因我不知道,点击链接没有进入页面但是编辑它,只有第一次,之后效果很好,所以我希望第一个函数也被调用onload不仅在模糊时。 我怎样才能做到这一点 ?

至于在启动时加载,javascript是单线程的,所以如果你按顺序排序,只需触发一个方法(…只需添加几个parens)。 但是因为你试图访问DOM,你想要等待元素可用(否则你将从选择器中得不到任何回报)。

但你已经拥有:

 $(document).ready( function(){} ); 

这正是你所要求的,它还有一个简写:

 $( function(){} ); 

所以我不得不同意rodneyrehm,这可能与你网页上的其他js有一些碰撞。 您可能希望将其封装在某个命名空间中以确保不是问题。

我写了一个快速版本,如果你仍然遇到问题,应该以你的方式开始: http : //jsfiddle.net/scispear/dUWwB/ 。 我将’updateURL’方法拉出来以防你的ajax调用(你提到过)只是预先填充字段(这样你也可以传入值)。

它也适用于多个输入/显示,我认为你的目的不是100%肯定。