在click方法内绑定事件
Binding events inside click method
之前有人告诉我不应该在函数内部绑定事件。我最好的解决这个问题的办法是什么?我点击一个链接,然后从这个链接中获取一些属性。以下是我目前正在做的。
$(".portfolioLink").click(function(){
// Show slide and portfolio piece info
$(".inner-content.portfolio").show();
// Reset slides timer and pagination
clearInterval($('#slides').data('interval'));
$("ul.pagination li").removeClass("current");
// Get ID from link that is clicked.
var slideID = $(this).parent().attr("id");
$("#previous").click(function() {
slideID--;
clearInterval($('#slides').data('interval'));
$("ul.pagination li").removeClass("current");
portfolioSwitch(slideID);
});
$("#next").click(function() {
slideID++;
clearInterval($('#slides').data('interval'));
$("ul.pagination li").removeClass("current");
portfolioSwitch(slideID);
});
}
我有两个来回的按钮,分别是下一个和上一个按钮。根据我点击的链接,我想前进或后退。在$(".portfolioLink")
点击事件之外拥有这些点击事件并同时从投资组合链接中获得这些属性的最佳方式是什么?
将点击事件绑定到另一个点击事件中意味着每次点击.portfolioLink
时,一个新的点击函数被绑定到#previous/#next按钮,所以如果点击.portfolioLink
两次,它将增加两次,如果点击三次,它将增加三次,等等。您可以在更高的范围内使用变量来解决这个问题,如下所示:
var slideID = 0;
$(".portfolioLink").click(function() {
$(".inner-content.portfolio").show();
clearInterval($('#slides').data('interval'));
$("ul.pagination li").removeClass("current");
slideID = $(this).parent().attr("id");
}
$("#previous, #next").click(function() {
slideID = this.id=='next' ? slideID+1 : slideID-1;
clearInterval($('#slides').data('interval'));
$("ul.pagination li").removeClass("current");
portfolioSwitch(slideID);
});
在函数内部绑定事件处理程序不是问题,只有当该函数是另一个事件处理程序时才会出现问题。如果其他事件处理程序将被执行多次(就像您的情况一样),您将每次绑定(添加)一个新的事件处理程序,这通常不是您想要做的。我之前被告知不应该在函数内部绑定事件
你可以使用一个共享变量(一个在公共作用域中的变量)…如果未设置slideID
,则单击#next
或#previous
不做任何操作:
var slideID;
$(".portfolioLink").click(function(){
// ...
// Get ID from link that is clicked.
slideID = $(this).parent().attr("id");
});
$("#previous").click(function() {
if(typeof slideID !== 'undefined') {
// ...
}
});
$("#next").click(function() {
if(typeof slideID !== 'undefined') {
// ...
}
});
或者用默认幻灯片号初始化slideID
相关文章:
- 在offline.js中绑定事件
- 如何在angularjs中检查Kendo树视图数据绑定事件
- 在页面高度更改时绑定事件
- 在页面重新加载后绑定事件,并仅使用Knockout.js、html和js创建新的html元素
- 使用onbeforeunload绑定事件
- 传递类似绑定事件的参数
- 如何对修改后的元素重新绑定事件
- 聚合物模板自动绑定:在模板绑定事件之前的核心选择火灾
- Jquery差异B/w Jquery绑定事件
- SessionStorage绑定事件
- extjs,如何在表单操作中绑定事件
- 模拟 Web 浏览器方向更改事件以使用 Jasmine 测试绑定事件处理程序函数
- 绑定事件发射器上的单个事件
- 如何在绑定事件期间排除元素
- 将鼠标悬停在位于我的页面上的 iframe 上的绑定事件,其中包含包含的 src
- 在 jQuery 中创建 DOM 之前的绑定事件
- 如何在页面加载时在 ajax 调用中绑定事件处理程序后触发事件
- 使用 ajax 加载的页面绑定和取消绑定事件处理程序
- 咖啡脚本构造函数中的绑定事件
- 将数据添加到动态创建的元素和绑定事件