如何jQuery JavaScript条件语句(初学者)
如果这是一个过于简单的问题,我深表歉意,但我的搜索毫无结果 我有一个jQuery函数,它会在我的一些页面上产生错误,这些页面不包含如何jQuery JavaScript条件语句(初学者),javascript,jquery,Javascript,Jquery,如果这是一个过于简单的问题,我深表歉意,但我的搜索毫无结果 我有一个jQuery函数,它会在我的一些页面上产生错误,这些页面不包含#消息输入: Error: jQuery("#message").val() is undefined Line: 56 和我的jQuery函数: function updateCountdown() { var $left = 255 - jQuery( '#message' ).val().length; jQuery( '#countdown
#消息输入:
Error: jQuery("#message").val() is undefined
Line: 56
和我的jQuery函数:
function updateCountdown()
{
var $left = 255 - jQuery( '#message' ).val().length;
jQuery( '#countdown' ).text( $left + ' Characters Remaining' );
}
$( document ).ready( function()
{
updateCountdown();
$( '#message' ).change( updateCountdown );
$( '#message' ).keyup( updateCountdown );
});
所以我的问题是,如何使用条件从没有#message
输入的页面中删除错误消息?我认为我的问题是对JavaScript的工作原理缺乏基本的了解。改进您的选择器,以确保它实际上获得了一个输入元素(因此有一个值)。然后在使用选择器之前检查它是否与任何内容匹配。请注意,返回的jQuery对象的length
是匹配元素的数量(必须大于0)。哦,只要与其他javascript框架没有任何冲突,就可以始终使用$
函数
function updateCountdown()
{
var msg = $('input#message');
if (msg.length > 0) {
var $left = 255 - msg.val().length;
$( '#countdown' ).text( $left + ' Characters Remaining' );
}
}
您只需要检查jQuery对象是否包含任何项。我会这样做
$( document ).ready( function()
{
var $message = jQuery( '#message' );
if($message.length > 0) {
updateCountdown();
$( '#message' ).change( updateCountdown );
$( '#message' ).keyup( updateCountdown );
}
});
然后,我将您的updateCountdown()
函数更改为使用this
关键字,而不是执行另一个jQuery查找。jQuery将这个设置为事件发生的DOM元素
function updateCountdown()
{
var $left = 255 - jQuery( this ).val().length;
jQuery( '#countdown' ).text( $left + ' Characters Remaining' );
}
我不想费心对从选择器返回的jQuery对象执行显式测试——让jQuery为您做吧
$(function() {
$('#message').each(function() {
var $self = $(this);
$self.bind('change keyup', function updateCountdown() {
$('#countdown').text((255 - $self.val().length)) + ' characters remaining');
});
});
});
如果“#message”与任何内容都不匹配,则.each(…)
调用将不会执行任何操作 唯一的问题是init代码。。之后一切都会好起来的。我们也要这样做:
$( document ).ready( function()
{
$( '#message' ).change( updateCountdown ).keyup( updateCountdown ).keyup();
});
注意链接的使用