也需要为“加载”调用脚本,而不仅仅是在“模糊”上
need the script to be called for "onload" too not just on "blur"
代码为:
$(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) {
$("<span> </span>").appendTo($container);
}
$("<a />")
.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')
}
});
网页代码:
<div style="padding:0 !important;margin-top:8px !important;">
<div class="aCustomDiv" style="padding: 0px ! important; display: block;">
<a href="http://www.google.com">www.google.com</a><span></span><a href="http://www.facebook.com">www.facebook.com</a><span></span><a href="http://www.wikipedia.org">www.wikipedia.org</a>
</div>
<input type="text" value="www.google.com www.facebook.com www.wikipedia.org" onchange="immediateEditItemInCart(this.value,'url',0,'pr','35')" class="mandatory0" id="url0" style="display: none;" readonly="readonly">
此脚本执行以下操作:
- 将文本转换为这些 ID 的 URL (url0 ...
- 双击链接使其可编辑
- 单击div区域,链接旁边使其可编辑
- 单击链接 => 转到页面
我的问题:由于某种原因我不知道,单击链接不会转到页面,而是对其进行编辑,只有第一次,之后效果很好,所以我希望调用第一个函数也加载,不仅在模糊时。 我该怎么做?
就启动时加载而言,javascript 是单线程的,因此如果您保持有序(...只需添加几个参数)。 但是因为你试图访问 DOM,所以你确实想等待元素可用(否则你不会从选择器得到任何回报)。
但您已经拥有:
$(document).ready( function(){} );
它完全符合您的要求,它还具有以下简写:
$( function(){} );
所以我必须同意 rodneyrehm 的观点,这可能是您与页面上的其他 js 发生的一些冲突。 您可能希望将其封装在某个命名空间中,以确保这不是问题所在。
我写了一个快速版本,如果你仍然遇到问题,它应该让你走上你的路作为起点:http://jsfiddle.net/scispear/dUWwB/。 我拉出了"updateURL"方法,以防您的 ajax 调用(您提到)只是预填充字段(这样您也可以传入值)。
它也适用于多个输入/显示,我认为您要的不是 100% 确定的。
相关文章:
- Ajax聊天消息重复而不仅仅是更新
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 事件为所有项目而不仅仅是当前项目激发
- 在加载时显示,而不仅仅是在选中时显示
- 删除 HttpCookie 不仅仅是它的值
- 脚本选择所有输入,而不仅仅是复选框
- for 循环中的 if 语句都执行,而不仅仅是一个
- 当将函数传递给方法时,为什么使用匿名函数容器而不仅仅是原始函数有效
- .slideup()删除整个ul,而不仅仅是嵌套的li
- jQuery隐藏所有trs或td,而不仅仅是一个
- 使用Maven压缩所有内容,而不仅仅是源目录
- 从数组中删除双值,而不仅仅是javascript中的重复值
- 在全球范围内强制ng严格di,而不仅仅是在ng应用程序级别上
- Jquery Slider-获取滑块的每个数值?不仅仅是在mouseout上
- 我如何让jQuery在Facebook发布自动加载时做一些事情,而不仅仅是在页面加载时
- 如何使元素的宽度和高度为页面(文档)的100%,而不仅仅是窗口(浏览器)
- 在 Magnific 弹出窗口中打开所有图像,而不仅仅是发布图像
- 有没有办法使非html5支持浏览器支持html5,而不仅仅是html5标记,html5 api也是如此
- 之前每个测试都会调用每个测试,而不仅仅是一次
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上