大家好,我知道这个事件是按下按钮进入但是如果我尝试使用绑定或它就不起作用。有什么帮助吗?
这是我的活动:
$.fn.enterKey = function (fnc) {
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if (keycode == '13') {
fnc.call(this, ev);
}
})
})
}
如果我尝试这样做:
$('.foo').on('enterKey', function() {
// other code --> doesn't work
});
$('.foo').bind('enterKey', function() {
// other code --> doesn't work
});
这是我的代码:
var add_comment = { // add comment
urlRemove : CI_ROOT + 'add_comment_team/',
run : function() {
add_comment.share('.comment');
},
share : function(obj) {
var alreadySent = false;
$(obj).enterKey(function() {
var comment = $(this);
if (comment.val() != "") {
if(!alreadySent) {
alreadySent = true;
$.ajax({
type: "POST",
url: add_comment.urlRemove,
data: "text=" + comment.val() + "&post_id=" + comment.attr('id'),
success: function(html) {
comment.val('');
comment.closest('.shared_box').children('.recent_comment').append(html);
alreadySent = false;
},
error: function(){
alert('Error on ajax call');
alreadySent = false;
}
});
}
} else {
return false;
}
});
}
};
我尝试使用触发器执行此操作,但仍无法正常工作
var add_comment = { // add comment
urlRemove : CI_ROOT + 'add_comment_team/',
run : function() {
add_comment.share('.comment');
},
share : function(obj) {
var alreadySent = false;
$(document).on('enterKey',obj, function() {
var comment = $(this);
if (comment.val() != "") {
if(!alreadySent) {
alreadySent = true;
$.ajax({
type: "POST",
url: add_comment.urlRemove,
data: "text=" + comment.val() + "&post_id=" + comment.attr('id'),
success: function(html) {
comment.val('');
comment.closest('.shared_box').children('.recent_comment').append(html);
alreadySent = false;
},
error: function(){
alert('Error on ajax call');
alreadySent = false;
}
});
}
} else {
return false;
}
});
$(obj).trigger('enterKey');
}
};
答案 0 :(得分:0)
$('.foo').enterKey();
您尚未发布任何事件,您刚刚向 jQuery.prototype
添加了名为enterkey
的方法
$.fn
指向 jQuery.prototype 。您添加到它的任何方法或属性都可用于jQuery包装对象的所有实例。因此,它应该可以工作。
确保正确触发它。
答案 1 :(得分:0)
你可以尝试这个:
$(document).on('enterKey', '.foo', function() {
// other code --> might work
});
将事件委托给文档或最近的静态父级。
当我们使用.on()方法定义自定义事件类型时,.trigger()的第二个参数可能会有用。
.trigger() documentation @ jQuery
或者您可以添加.trigger()
方法:
$('.foo').trigger('enterkey');