0

当我加载页面 selText() 仅在两次单击后运行,然后它工作正常但如果刷新页面我需要再次单击两次

<a href="javascript: selText();" class="select">click</a>
<input type="text"  value="value" />

<a href="javascript: selText();" class="select">click</a>
<input type='text'  value='value' />

<a href="javascript: selText();" class="select">click</a>
<input type="text"  value="value" />




function selText() {
        $(".select").click(function () { $(this).nextUntil("a").select(); });
    }
4

4 回答 4

0

我不知道为什么,但在我项目的某些视图中,上面的代码不起作用,我必须执行以下操作

$(document).ready(function () {
    $(document).on('click', '.tabl-red', function (e) {
        e.preventDefault();
        $(this).nextUntil("a").select();
    });
});

也许它可以帮助某人

于 2013-11-04T13:23:23.797 回答
0

这是因为当你添加

function selText() {
    $(".select").click(function () { $(this).nextUntil("a").select(); });
}

然后单击锚链接,第一次发生的情况是该函数将单击事件绑定到“.select”元素。这就是为什么第一次点击没有做任何事情的原因。但是之后的点击会按预期工作。上述代码的不良影响是,您将单击事件绑定到实际上执行相同操作的多个函数(绑定的函数数等于单击锚标记的次数)

答案是,您需要放置

$(".select").click(function () { $(this).nextUntil("a").select(); });

在下面

$(document).ready(function(){
..// your code here
});
于 2013-11-01T09:48:05.813 回答
0

把你的代码放进去

$(document).ready(function() {
    $(".select").click(function (e) {
        e.preventDefault();
        $(this).nextUntil("a").select();
    });
});
于 2013-11-01T09:39:19.490 回答
0

您正在注册单击处理程序,该处理程序在单击处理程序上调用该select方法,因此当第一次单击发生时,没有处理程序来选择元素,但它仅注册一个将进行选择的处理程序。当第二次单击发生时,您将有 2 个用于单击事件selText的处理程序,第一个是第一个注册的处理程序。但是当您第三次单击时,select()代码将被调用两次。

因此,在您的情况下,解决方案是删除内联处理程序并在 dom 就绪回调上注册一个单击处理程序,如下所示。

<a href="#" class="select">click</a>
<input type="text"  value="value" />

<a href="#" class="select">click</a>
<input type='text'  value='value' />

<a href="#" class="select">click</a>
<input type="text"  value="value" />

然后

jQuery(function () {
    $(".select").click(function (e) {
        $(this).nextUntil("a").select();, e.preventDefault()
    });
})
于 2013-11-01T09:39:26.880 回答