Was jQuery Funktion ist äquivalent zu PHP str_replace?
Ich bin auf der Suche nach allen Attributen der option-tag (außer der Wert), so kann ich ersetzen die option tag mit einem Listenelement-tag und fügen Sie dann die Attribute, die in der Liste Element. Alle Google-Ergebnis, auf die ich stoße, sagt zu replace()
dies zu tun, aber ich erhalte die folgende Fehlermeldung in der Konsole:
Uncaught TypeError: undefined is not a function
Dies geschieht auf die folgende Zeile:
var elemAtts = $(this).replace('<option value="'+$(this).prop("value")+'" ', '');
Dies ist das komplette Skript:
$('select').each(function(){
var selectName = $(this).prop("name");
var selectOpts = $(this).find("option");
var selectPar = $(this).parent();
var hiddenInput = '<input type="hidden" name="'+selectName+'" value="">';
var menu = '<div class="jqSelect">' +
'<div class="selected-text" id="'+selectName+'-selected"><div id="'+selectName+'-text">'+$(this).find(":selected").text()+'</div>' +
'<div class="caret" onclick="$(\'ul#'+selectName+'-menu\').toggle();"></div>' +
'<ul id="'+selectName+'-menu">';
selectOpts.each(function(){
if($(this).is(":selected")){
$('#'+selectName+'-selected').text($(this).text());
menu += '<li class="selected"';
} else {
menu += '<li';
}
var elemAtts = $(this).replace('<option value="'+$(this).prop("value")+'" ', '');
elemAtts = elemAtts.replace('>', '');
menu += ' data-option-value="'+$(this).prop("value")+'" '+elemAtts+'>'+$(this).text()+'</li>';
});
menu += '</ul></div>';
selectPar.html(menu + hiddenInput);
$('ul#'+selectName+'-menu').hide();
generatedMenu = $('#'+selectName+'-menu');
generatedMenu.find('li').each(function(){
$(this).on('click', function(){
$('#'+selectName+'-text').text($(this).text());
$('#'+selectName+'-menu').hide();
$('input[name="'+selectName+'"]').attr("value", $(this).data('option-value'));
$(this).siblings().removeProp('class');
$(this).prop('class', 'selected');
});
});
});
Im Grunde, was ich versuche zu tun ist, schalten Sie diese...
<option value="123" rel="toggleElem" class="foo" id="bar">Hello!</option>
In diesem(string-form)...
rel="toggleElem" class="foo" id="bar"
InformationsquelleAutor ShoeLace1291 | 2014-07-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, ich hab ein bisschen mehr Google-ing und eine Antwort gefunden hier. Ich dachte, dass replace() war eine jQuery-Funktion, wenn es tatsächlich eine JavaScript-Funktion. Der Fehler passierte, weil ich es direkt mit $(this). Alle die ich tun musste, war die folgende:
InformationsquelleAutor ShoeLace1291
Jeden dom-Knoten hat einen
attributes
Eigenschaft, die eine Karte aller seiner Attribute.Können Sie Durchlaufen, Sie zu übergeben an ein anderes element und nicht brauchen, um über eine beliebige Zeichenfolge ersetzen.
Folgenden wird verwandeln Sie einen einzigen
<option>
zu einem<li>
mit identischen Attributen:Wenig modifizieren, zu entfernen, das value-Attribut, wenn Sie möchten,
DEMO
MDN Knoten.Attribute docs
InformationsquelleAutor charlietfl