1

代码是:

$(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')
}
});

HTML 代码:

<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">

该脚本执行以下操作:

  1. 将这些 id 的文本转换为 url (url0 ...)
  2. 双击链接使其可编辑
  3. 单击 div 区域,链接旁边使其可编辑
  4. 一键点击链接=>进入页面

我的问题:出于某种原因,我不知道,单击链接不会转到页面而是编辑它,只有第一次,之后效果很好,所以我希望第一个函数也被调用 onload不仅当模糊。我怎样才能做到这一点 ?

4

1 回答 1

0

至于在启动时加载,javascript 是单线程的,所以如果你保持事情井井有条,只需触发一个方法就可以工作(......只需添加几个括号)。但是因为您正在尝试访问 DOM,所以您确实希望等待元素可用(否则您将无法从选择器中得到任何返回)。

但是您已经拥有:

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

这正是您所要求的,它还具有以下简写:

$( function(){} );

因此,我不得不同意 rodneyrehm,这可能是您与页面上的其他 js 发生的一些冲突。您可能希望将它封装在某个命名空间中,以确保这不是问题所在。

如果您仍然遇到问题,我写了一个快速版本,可以作为您的起点:http: //jsfiddle.net/scispear/dUWwB/。如果您的 ajax 调用(您提到的)只是预先填充该字段(这样您也可以传递值),我拉出了“updateURL”方法。

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

于 2012-07-06T19:37:38.343 回答