jquery函数在两次单击后首次运行

时间:2013-11-01 09:37:45

标签: jquery function select click selectall

当我加载页面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 个答案:

答案 0 :(得分:0)

将您的代码放入

$(document).ready(function() {
    $(".select").click(function (e) {
        e.preventDefault();
        $(this).nextUntil("a").select();
    });
});

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

这是因为当您添加

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

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

答案是,您需要放置

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

下的

$(document).ready(function(){
..// your code here
});

答案 3 :(得分:0)

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

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

也许它有助于某人