如何使用jQuery触发链接上的单击

时间:2011-04-27 21:59:18

标签: jquery triggers click

我有一个链接:

<ul id="titleee" class="gallery">
  <li>
    <a href="#inline" rel="prettyPhoto">Talent</a>
  </li>
</ul>

我试图通过使用:

来触发它
$(document).ready(function() {
  $('#titleee').find('a').trigger('click');
});

但它不起作用。

我也尝试过:$('#titleee a').trigger('click');

修改

我实际上需要触发这里所谓的<a href="#inline" rel="prettyPhoto">

12 个答案:

答案 0 :(得分:249)

如果您尝试在锚点上触发事件,那么您拥有的代码将会工作我在jsfiddle中使用添加的eventHandler重新创建了您的示例,以便您可以看到它有效:

$(document).on("click", "a", function(){
    $(this).text("It works!");
});

$(document).ready(function(){
    $("a").trigger("click");
});

您是否尝试通过单击锚点让用户导航到网页上的某个点,或者您是否尝试触发绑定到它的事件?也许您实际上没有将click事件成功绑定到事件?

还有:

$('#titleee').find('a').trigger('click');

相当于:

$('#titleee a').trigger('click');

无需致电查找。 :)

答案 1 :(得分:180)

很抱歉,但实际上并不需要事件处理程序。您需要的是标签中要点击的另一个元素。

<a id="test1" href="javascript:alert('test1')">TEST1</a>
<a id="test2" href="javascript:alert('test2')"><span>TEST2</span></a>

Jquery的:

$('#test1').trigger('click'); // Nothing
$('#test2').find('span').trigger('click'); // Works
$('#test2 span').trigger('click'); // Also Works

这就是你点击的内容,它不是标签,而是标签内的东西。不幸的是,JQuery似乎没有识别出裸文本,但它是由vanilla javascript:

document.getElementById('test1').click(); // Works!

或者通过将jQuery对象作为数组访问

$('#test1')[0].click(); // Works too!!!

答案 2 :(得分:6)

使用您提供的代码,您不能指望发生任何事情。我的第二个@mashappslabs:首先添加一个事件处理程序:

$("selector").click(function() {
    console.log("element was clicked"); // or alert("click");
});

然后触发你的活动:

$("selector").click(); //or
$("selector").trigger("click");

您应该在控制台中看到该消息。

答案 3 :(得分:5)

如果您尝试在锚点上触发事件,那么您拥有的代码将起作用。

$(document).ready(function() {
  $('a#titleee').trigger('click');
});

OR

$(document).ready(function() {
  $('#titleee li a[href="#inline"]').click();
});

OR

$(document).ready(function() {
  $('ul#titleee li a[href="#inline"]').click();
});

答案 4 :(得分:3)

你必须首先设置点击事件,然后你可以触发它,看看会发生什么:

//good habits first let's cache our selector
var $myLink = $('#titleee').find('a');
$myLink.click(function (evt) {
  evt.preventDefault();
  alert($(this).attr('href'));
});

// now the manual trigger
$myLink.trigger('click');

答案 5 :(得分:3)

这是演示如何触发事件

的演示
<!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        $("input").select(function(){
            $("input").after(" Text marked!");
        });
        $("button").click(function(){
            $("input").trigger("select");
        });
    });
    </script>
    </head>
    <body>

    <input type="text" value="Hello World"><br><br>

    <button>Trigger the select event for the input field</button>

    </body>
    </html>

答案 6 :(得分:3)

对于链接,这应该有效:

&#13;
&#13;
eval($(selector).attr('href'));
&#13;
&#13;
&#13;

答案 7 :(得分:2)

这并不能完全回答你的问题,但会让你得到同样的结果而不那么头疼。

我总是让我的点击事件调用方法包含我想要执行的所有逻辑。因此,如果我想在没有实际点击的情况下执行操作,我可以直接调用该方法。

答案 8 :(得分:2)

您应该调用元素的本机.click()方法或使用createEvent API。

有关详细信息,请访问:https://learn.jquery.com/events/triggering-event-handlers/

答案 9 :(得分:1)

最短的答案

$('#titlee a').click();

答案 10 :(得分:0)

由于该问题的“触发对<a>元素的点击”在Google中排名第一,并且实际上没有答案提及您的操作方式,因此您可以这样做:

$('#titleee a')[0].click();

说明:您在基础html元素而不是jQuery对象上触发click

不客气的Google员工:)

答案 11 :(得分:0)

我们可以通过多种方式做到这一点...

案例-1

我们可以这样使用 trigger $("#myID").trigger("click");

案例-2

我们可以使用 click() 这样的功能: $("#myID").click();

案例-3

如果我们想在programmatically上编写函数,请单击。.

$("#myID").click(function() {
  console.log("Clicked");
// Do here whatever you want
});

案例-4

// Triggering a native browser event using the simulate plugin
$("#myID").simulate( "click" );  

您也可以参考以下内容:https://learn.jquery.com/events/triggering-event-handlers/