为什么属性选择器不适用于jQuery
Why is the attribute selector not working with jQuery?
我正在尝试使用属性中的任何值获取已分配data-maxlength
的所有元素。然后,每次文本输入或文本区域的值更改时,我都希望在工具提示中显示输入的length
以及引导工具提示中的maxlength
值(x/250个字符)。
当我输入时,什么都没有发生,没有工具提示,没有错误。控制台中甚至没有出现我的console.log
消息。这个代码出了什么问题?
jQuery/JS:
$(document).ready(function(){
$('[data-maxlength]').find().each(function(){
console.log('hello');
$(this).on('keyup', function(){
console.log('hi!');
$(this).data('toggle', 'tooltip').data('placement', 'bottom').attr('title', $(this).val().length + ' / ' + $(this).data('maxlength'));
});
});
});
HTML:
<textarea class="form-control" rows="7" name="description" data-maxlength="250"></textarea>
您不需要使用.find()
$('[data-maxlength]').each(function(){
但似乎你错了,你应该将事件绑定到选择器本身,选择器本身也返回一个集合,$(this)
将是你当前的元素:
$('[data-maxlength]').on('keyup', function(){
$(this).data({
'toggle':'tooltip',
'placement' : 'bottom'
}).attr('title', $(this).val().length + ' / ' + $(this).data('maxlength'));
});
如果没有选择器,就不能使用jQuery方法.find(),您应该向其添加选择器.find(selector)
或完全删除它:
$('[data-maxlength]').find(selector).each(function(){
//OR
$('[data-maxlength]').each(function(){
注意:您不应该在each()
方法中定义事件,当您跟踪输入更改时,最好使用input
事件而不是keyup
:
$(document).ready(function(){
$('[data-maxlength]').on('input', function(){
$(this).data({ toggle: "tooltip", placement: "bottom"})
.attr('title', $(this).val().length + ' / ' + $(this).data('maxlength'));
});
});
希望这能有所帮助。
您正在尝试选择具有data-maxlength
值的元素。您可以使用以下内容。您可以在此处使用filter()
而不是find()
。
尝试获取所有具有数据最大长度的元素,这些元素具有属性中的任何值
$('[data-maxlength]').filter(function(){
$(this).data('maxlength') != '';
}).each(function(){});
您可以通过以下代码找到它
$(document).ready(function(){
alert($(".devTxt").attr("data-maxlength"));
});
https://jsfiddle.net/4eekb7jz/
相关文章:
- jQuery表单验证适用于Mozilla和Internet Explorer,但不适用于Chrome或Safari
- Jquery Ajax POST不工作.适用于GET
- Javascript仅适用于jQuery mobile中的页面刷新
- jQuery放大版不适用于Chrome和Safari,但适用于Firefox
- jQuery Toggle不适用于本地和我的网站,但适用于jsFiddle
- jQuery适用于Chrome、Firefox、IE,但不适用于iPhone
- 使用Jquery更改css样式适用于id's、 不在课堂上
- jquery脚本仅适用于firefox
- CSS/JQuery/Javascript加载图标仅适用于firefox
- jquery 2.2 serializeArray()适用于Firefox、Chrome,但不适用于IE(11)
- 使Javascript/JQuery视差幻灯片效果适用于类
- jQuery scrollTop()-仅适用于Firefox,不适用于Chrome
- 如何在mvc中使用ajax jquery上传文件仅适用于IE9
- 从jQuery调用Web服务失败适用于python
- 日历不适用于jQuery 1.9.1(但它适用于jQuery 1.7.1)
- 我的代码适用于jQuery 1.3.2,但不适用于1.6.4
- 如何使用适用于jQuery和jQuery Mobile的Google Map v3插件获取路线
- 代码适用于jquery 1.8.3,但不适用于1.9.1及更高版本
- 该函数适用于jquery 1.4.2,但不适用于jquery 1.9.1
- 从标签返回文本,其中最外层的HTML标签适用于jquery中的所有文本节点