我正在尝试将点击事件与jQuery中的函数组合在一起但不知何故它只在第二次点击后才有效。
点击后,首先我需要将元素的id更改为我给它的内容然后函数需要捕获具有更改的id的元素并运行。
我不能在这里使用类,所以我必须在点击时更改元素ID。
$('.element').click(function()
// here the element gets id "divBtn"
{if(this.id){this.id = "divBtn";}
// this is the function I need to run on the above first click
// this function is also the trigger to call scrolld.js (scrolldjs.com) so I am not sure if I
// can modify this part or not
$("[id*='Btn']").stop(true).on('click',function(e)
{e.preventDefault();
$(this).scrolld();
});
});
在第二行中,第一次单击时元素的id将更改为“divBtn”。这有效,可以在控制台中看到。
然而,只有在第二次点击后,该函数才会捕获id为“divBtn”的元素并运行。
如何将其合并为一次点击?
使用jQuery和学习新功能,这可能非常明显。谢谢你堆积任何帮助或输入。如果您有答案,如果您不介意,请评论您的代码或详细解释,因为我刚开始使用jQuery。谢谢。
编辑01:请注意我需要在元素上运行的脚本/函数仅适用于在id结尾处具有id和“Btn”的元素,因此我需要为元素使用id。如果有可能摆脱第二次点击并运行我想的功能。
编辑02:这是一个工作 jsfiddle http://jsfiddle.net/ASzTg/10/,您可以在第一次点击时看到浏览器控制台中的ID更改。然后第二次单击捕获scrollld脚本并完成其工作。从jsfiddle你可以看到我想要的东西,从导航栏链接点击很好地滚动所需的div到我想要的位置(或任何其他)。
一旦单击任何导航栏链接,Scrolld用于将内容包装器滚动到所需位置(顶部或任何其他位置)。由于Scrolld只接受一个id,我必须在点击时分配id,然后运行脚本。
希望这有助于我想要做的事情。如果您看到http://scrolldjs.com/#use,您可以看到触发器,这可能会解释这两个事件处理程序。希望这有助于找到正确的答案。
此致
答案 0 :(得分:0)
你可以完全删除第二个事件处理程序 - 不需要将2个单击事件处理程序绑定到同一个元素
$('.element').click(function (e) { // bind event handler to element/s
e.preventDefault(); // prevent default action
if (this.id) {
this.id = "divBtn"; // add id if it doesn't have one
}
$(this).scrolld(); // run your method
});
虽然如果您有多个.element
元素 - 但最终会使用相同的ID,这是无效的HTML