我的dom中有以下输入标记,无法添加类和/或ID:
<input type="radio" title=" ">
当我尝试
时$('input[title=" "]')
或
$('input[title=" "]')
它不会返回任何内容。我可以根据这个标题来提取这个吗?
答案 0 :(得分:3)
您的选择器无法正常工作,因为您没有使用正确的符号。 title属性获取任何解码的html实体,因此
将被解码为实际符号
(ascii代码160)。这意味着
文本不会匹配它,常规空格也不会匹配(ascii代码32)。
在Windows操作系统上,您可以输入 ALT + 0160 来获取符号。在其他操作系统上,您需要找到等效的键组合,或从字符映射中复制粘贴。
console.log( "Number of inputs with regular space: ", $('input[title=" "]').length );
console.log( "Number of inputs with text: ", $('input[title=" "]').length );
console.log( "Number of inputs with symbol: ", $('input[title=" "]').length );
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Regular space in title -->
<input type="checkbox" title=" ">
<!-- non-break space html entity -->
<input type="checkbox" title=" ">
<!-- encoded html entity which will match -->
<input type="checkbox" title="&nbsp;">
&#13;
答案 1 :(得分:1)
使用以下技巧与JQuery的filter()
函数和RegExp.test
函数一起获取包含
的标题属性的输入标记:
var inputs = $("input[title]").filter(function(i){
return /\u00A0/.test($(this).attr('title'));
});
$("input[title*=' ']");
要获取包含“常规”空间的标题属性的输入元素,请使用以下命令:
[attribute * = value] 选择器匹配其属性的每个元素 包含指定值的值。
答案 2 :(得分:1)
选择所有非空白标题属性是否足够?
.so
$('input:not([title=""])').click(function(){
alert('non-blank title');
});
答案 3 :(得分:1)
这应该有效:
var isFound = $('[title=" "]').length === 1;
if (isFound) console.log('Element is found.');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div title=" "></div>
这种微妙的区别是将实际的
空格字符放入选择器。
答案 4 :(得分:1)
有点笨拙可以尝试一个函数来返回title属性的值并使用它。如果您在普通页面中使用它,则可以将下面的getTitle参数换成更具体的选择器,例如ID。
function getTitle(selector) {
return $(selector).attr('title');
}
$('input[title=' + getTitle('input[type="radio"]') + ']');