使用 javascript 函数单击锚元素
Click anchor element using javascript function
我知道本网站的其他地方以及许多其他地方已经对此进行了介绍,但我似乎无法弄明白。
我有一个用于显示灯箱表单的定位标签:
<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 点击事件需要一个函数
(未测试)
$('#aNoData').on("click", function() {
console.log( "clicked the element with id aNoData );
});
如果您想触发点击(没有实际点击),jquery 也有一个功能:
http://api.jquery.com/trigger/
引用您的评论
OK Patrick, thanks, and I did try putting the whole function inside my $(document).ready block, but it doesn't work at all there
您不应该在 $(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);
我知道本网站的其他地方以及许多其他地方已经对此进行了介绍,但我似乎无法弄明白。
我有一个用于显示灯箱表单的定位标签:
<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 点击事件需要一个函数 (未测试)
$('#aNoData').on("click", function() {
console.log( "clicked the element with id aNoData );
});
如果您想触发点击(没有实际点击),jquery 也有一个功能: http://api.jquery.com/trigger/
引用您的评论
OK Patrick, thanks, and I did try putting the whole function inside my $(document).ready block, but it doesn't work at all there
您不应该在 $(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);