如何触发点击一个链接使用jQuery

我有一个链接:

<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');

编辑:

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

847356 次浏览

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

我总是有我的click事件调用方法,其中包含我想要执行的所有逻辑。这样我就可以直接调用这个方法如果我想执行操作而不需要实际点击。

如果你试图在锚上触发一个事件,那么你拥有的代码将工作。我在jsfiddle中重新创建了你的例子,添加了一个eventHandler,这样你就可以看到它是工作的:

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


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

您是试图通过单击锚点来引导用户导航到网页上的某个点,还是试图触发绑定到它的事件?也许您实际上没有成功地将单击事件绑定到事件?

也:

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

等价于这个:

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

不需要调用find。:)

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

//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');

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

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

然后触发事件:

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

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

抱歉,事件处理程序确实不需要。您所需要的是标签中的另一个元素。

<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识别,但它是由香草javascript:

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

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

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

这是如何触发事件的演示

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

你应该调用元素的原生.click()方法或使用createEvent API。

更多信息,请访问:https://learn.jquery.com/events/triggering-event-handlers/

如果您试图触发锚上的事件,那么您拥有的代码将可以工作。

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

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

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

对于链接,这应该工作:

eval($(selector).attr('href'));

由于这个问题在谷歌中排名第一,因为“触发对<a>元素的点击”,并且没有答案实际上提到了你是如何做到的,下面是你如何做到的:

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

解释:在底层的html元素而不是jquery对象上触发click

欢迎你的谷歌人:)

我们可以用很多方法来做……

案例- 1

我们可以像这样使用trigger

案例- 2

我们可以像这样使用click()函数

案例- 3

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

$("#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/

最短的回答:

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