使用 javascript 函数单击锚元素



我知道这已经在这个网站的其他地方以及许多其他地方进行了介绍,但我似乎无法弄清楚。

我有一个用于显示灯箱表单的锚标记:

<a id="aNoData" href="#divNoData" class="fancybox">No Data</a>

我想使用javascript函数单击它:

function fnNoData()
{
//  This line works
alert("this line works");   
//  Neither of these lines work
$('#aNoData').click();
document.getElementById('aNoData').click();
} 

我从我的代码后面调用该函数,如下所示:

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "fnNoData()", true); 

当我这样做时,第一行(警报框(显示正常。但是,其他两行(单击锚标记(则不然。如果我将它们放在我的 $(document(.ready 块中(锚点在页面加载时单击(,则非工作行效果很好。所以似乎点击我的锚点的行工作正常,只是不在我的函数中。

谁能看出我做错了什么?

如果你想直接点击,你可以使用trigger

检查这个希望这将帮助你。

function fnNoData()
{
//  This line works
alert("this line works");   
//trigger
$('#aNoData').trigger('click');
//document.getElementById('aNoData').click();
} 

jquery click 事件需要一个函数 (未测试(

$('#aNoData').on("click", function() {
console.log( "clicked the element with id aNoData );
});

如果你想触发点击(没有实际的点击(,jQuery也有一个功能: http://api.jquery.com/trigger/

引用您的评论

好的帕特里克,谢谢,我确实尝试将整个函数放在我的 $(document(.ready 块中,但它在那里根本不起作用

您不应该在$(document).ready()内部定义整个函数,而是在外部定义它并从ready()函数内部调用它

您的原始功能

function fnNoData(){
//  This line works
alert("this line works");   
//  Neither of these lines work
$('#aNoData').click(); 
}

ready()调用它

jQuery(document).ready(function () {
fnNoData();
});

希望这有帮助!

花了几个小时,但我终于强行找到了解决方案。

正如一些回复者所建议的那样,我的代码隐藏在所有元素完全加载之前尝试使用 DOM。我通过将代码中的行更改为以下内容来解决此问题:

ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "$(window).load(function() {fnNoData();});", true);

相关内容

  • 没有找到相关文章

最新更新