2016-05-30 5 views
-2

Ich habe folgende Input-Tag in meinem dom und unfähig Klassen hinzuzufügen und/oder ids:Wie kann ich Eingabefelder mit Titelattributen erhalten, die " " enthalten?

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

Als ich

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

oder

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

es nicht zurück versuchen etwas. Kann ich das basierend auf diesem Titel ziehen?

+0

Es gibt andere Eingabeelemente auf dem Dom mit einer Vielzahl von Einträgen, so dass auch "" nicht funktioniert. – notthehoff

+0

Ehrlich gesagt klingt das nach einer wirklich sehr schlechten Idee. –

+0

@MarcDix - Ehrlich gesagt stimme ich nicht zu. Die Situation, die es braucht. – notthehoff

Antwort

3

Ihre Selektoren haben nicht funktioniert, weil Sie nicht das richtige Symbol verwendet haben. Das title-Attribut erhält alle html-Entities decodiert, so dass &nbsp; zu dem tatsächlichen Symbol   (ascii-Code 160) decodiert wird. Das bedeutet, dass der &nbsp; Text nicht zu ihm passt, und auch kein regulärer Platz (ascii Code 32).

Auf einem Windows-Betriebssystem können Sie ALT + geben Sie das Symbol zu erhalten. Auf anderen Betriebssystemen müssen Sie die entsprechende Tastenkombination finden oder aus einer Zeichenzuordnung kopieren.

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);
<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;">

+0

Ich fühle mich wie meine Antwort hier ist ... aber alto160 scheint nicht zu funktionieren! – notthehoff

+0

Sind Sie auf einem Windows-Betriebssystem? Und um es zu tun halten Sie Alt gedrückt, und auf der Tastatur drücken Sie 0, dann 1, dann 6, dann 0, und lassen Sie dann Alt –

+0

Mac. Ich googelte und fand http://design215.com/toolbox/alt_codes.php. Ich werde gerade jetzt sagen .... Ich habe Dinge mit Javascript getan, auf die ich nicht stolz bin. – notthehoff

1

Verwenden Sie die folgenden Trick mit der JQuery filter() Funktion und RegExp.test Funktion Eingangs-Tags mit Titel Attribute zu erhalten, die &nbsp; enthalten:

var inputs = $("input[title]").filter(function(i){ 
    return /\u00A0/.test($(this).attr('title')); 
}); 

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

Um Eingabeelemente mit dem Titel Attribute zu erhalten, enthält ein " verwenden Sie folgendes:

Die [Attribut * = Wert] Selektor stimmt mit jedem Element überein, dessen Attribut Wert einen angegebenen Wert enthält.

1

Wäre es ausreichend, alle nicht-leeren Titelattribute auszuwählen?

$('input:not([title=""])').click(function(){ 
 
    alert('non-blank title'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<input type="text" title="&nbsp;" />

1

sollte diese Arbeit:

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>

Dieser feine Unterschied ein tatsächliches &nbsp; nicht ein Leerzeichen in Wähler zu setzen ist.

+0

Das ist eines der Szenarien, das ich versucht habe und das in der ursprünglichen Frage steht ... es sei denn, etwas geht in der Übersetzung verloren. – notthehoff

+0

@notthehoff Ihr Selektor enthält ein reguläres Leerzeichen, nicht ein ' '. –

1

Es ist ein bisschen unhandlich kann eine Funktion versuchen, den Wert des Attributs title zurückzukehren und diese zu verwenden. Wenn Sie dies auf einer normalen Seite verwenden, können Sie den getTitle-Parameter für einen spezifischeren Selektor wie ID austauschen.

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

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

Wenn ihre Eingabe das erste Optionsfeld im Dokument ist, funktioniert dies nicht. Auch wenn sie 'input [type =" radio "] tun könnten, warum würde dann dann der Titel und dann versuchen, es anders auszuwählen, wenn sie bereits einen Verweis darauf haben –

+0

Ja, ich hätte wahrscheinlich geklärt dass der Code für das Beispiel spezifisch ist. Damit der Code in einer realen Umgebung funktioniert, benötigen Sie einen spezifischeren Selektor. Wenn es sich um ein Optionsfeld handelt, sollten Sie eine ID haben. – litel

Verwandte Themen