如何获取包含“”的标题属性的输入标记?

时间:2016-05-30 20:16:31

标签: javascript jquery html

我的dom中有以下输入标记,无法添加类和/或ID:

<input type="radio" title="&nbsp;">

当我尝试

$('input[title=" "]')

$('input[title="&nbsp;"]')

它不会返回任何内容。我可以根据这个标题来提取这个吗?

5 个答案:

答案 0 :(得分:3)

您的选择器无法正常工作,因为您没有使用正确的符号。 title属性获取任何解码的html实体,因此&nbsp;将被解码为实际符号 (ascii代码160)。这意味着&nbsp;文本不会匹配它,常规空格也不会匹配(ascii代码32)。

在Windows操作系统上,您可以输入 ALT + 0160 来获取符号。在其他操作系统上,您需要找到等效的键组合,或从字符映射中复制粘贴。

&#13;
&#13;
console.log( "Number of inputs with regular space: ", $('input[title=" "]').length );
console.log( "Number of inputs with &nbsp; text: ", $('input[title="&nbsp;"]').length );
console.log( "Number of inputs with &nbsp; 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="&nbsp;"> 

<!-- encoded html entity which will match &nbsp;  -->
<input type="checkbox" title="&amp;nbsp;">
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用以下技巧与JQuery的filter()函数和RegExp.test函数一起获取包含&nbsp;的标题属性的输入标记:

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="&nbsp;"></div>

这种微妙的区别是将实际的&nbsp;空格字符放入选择器。

答案 4 :(得分:1)

有点笨拙可以尝试一个函数来返回title属性的值并使用它。如果您在普通页面中使用它,则可以将下面的getTitle参数换成更具体的选择器,例如ID。

function getTitle(selector) {
return $(selector).attr('title');
}

$('input[title=' + getTitle('input[type="radio"]') + ']');