我在我的网站voting mechanism
,如果用户尝试vote(up or down)
我会检查他是否登录,因为我已经编写了以下代码,
$(".vote").click(function(){
if(is_logged_in)
{
// Doing necessary stuff for vote up/down
}else
{
// Showing Login Dialog box
submitForm(".lform",function(response){
if(data.status == "1")
{
//Closing the Login Dialog Box
is_logged_in = 1; // Assigning the value
bindEvent(".vote","click"); // Binding the Event,but can't able to it
}
});//Form Submission Closed
}// Else Closed
});// Main 'click' closed
function bindEvent(selector,eventType){
$(selector).bind(eventType);
}
而不是外部函数bindEvent(".vote","click")
我尝试过没有bindEvent()
,但我无法在成功登录后动态绑定click event
。
答案 0 :(得分:1)
您应该使用on()来绑定动态创建的元素。
$(document).on("click", ".vote",function(){
if(is_logged_in)
{
// Doing necessary stuff for vote up/down
}
else
{
// Showing Login Dialog box
submitForm(".lform",function(response){
if(data.status == "1")
{
//Closing the Login Dialog Box
is_logged_in = 1; // Assigning the value
bindEvent(".vote","click"); // Binding the Event,but can't able to it
}
});//Form Submission Closed
}// Else Closed
});// Main 'click' closed
答案 1 :(得分:1)
为了绑定事件上发生的事情,您需要传递一个回调,以便在该事件发生时触发。在上面的代码中,您没有指定回调。
function bindEvent(selector,eventType){
$(selector).bind(eventType);
}
你需要这样的东西:
function bindEvent(selector,eventType,callBack){
$(selector).bind(eventType, callBack);
}
您将使用它:
bindEvent('.target', 'click', function(){
alert('This will trigger on click!');
})
在重新阅读您的代码后,我认为您实际需要的是触发 click事件,而不是将其绑定到它:
$(".vote").click(function(){
var $vote = $(this);
if(is_logged_in) {
// Doing necessary stuff for vote up/down
}
else {
// Showing Login Dialog box
submitForm(".lform",function(response){
if(data.status == "1"){
//Closing the Login Dialog Box
is_logged_in = 1; // Assigning the value
$vote.click();
}
});//Form Submission Closed
}// Else Closed
});
使用click()
是一种简单的方法,或者您可以使用jQuery的.trigger('click')
方法。您可能还希望避免点击事件冒泡到父元素,这在这种情况下是有意义的,因此您也可以使用.triggerHandler('click')
。