2017-10-26 2 views
-2

Ich habe ein AJAX-Suchfeld erstellt. Ajax-Suche funktioniert und Elemente werden erfolgreich hinzugefügt. Wenn ich die hinzugefügten Suchelemente entferne. Ich bekomme die angeklickten Suchwerte hinzugefügt. Konvertiere sie in ein Array und dann mache ich inArray und entferne die passenden. Aber das Problem ist, wenn ich split für jQuery verwenden. Es konvertiert keine einfache Zeichenfolge in ein Array. Hier ist der HTML-Code.jQuery's .split() konvertiert keine Zeichenfolge

$('.placeholder').on("click", "li", function() { 
 

 
    parent = jQuery('.supplier-ajax'); // Parent 
 
    id = jQuery(this).attr('id'); 
 
    slug = jQuery(this).attr('slug'); 
 
    supplierval = parent.find('#product_supplier').val(); 
 

 
    console.log(parent); 
 
    console.log('placeholderclick'); 
 
    console.log(slug); 
 
    console.log(id); 
 
    console.log(supplierval); 
 
    console.log(typeof supplierval) 
 

 

 
    supplierarray = $(supplierval).toString().split(","); 
 
    console.log(supplierarray); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span class="search-field supplier-ajax"> 
 
    \t <div class="placeholder"> 
 
    \t \t <input type="search" id="woocommerce-product-supplier-field" class="supplier-field field form-control valid" autocomplete="off" aria-invalid="false"> 
 
    \t \t <ul class="placeholder-items"> 
 
       <li class="supplier-ajax-placeholder" id="726" slug="bottle">Bottle</li> 
 
      </ul> 
 
    \t </div> 
 
    \t <i class="fa fa-search" aria-hidden="true"></i> 
 
    \t <div class="hidden" id="suggesstion-box"> 
 
    \t \t <ul> 
 
       <li id="726" slug="bottle">Bottle</li> 
 
       <li id="1011" slug="eurobottle">Eurobottle</li> 
 
       <li id="612" slug="bottle-promotions">Bottle Promotions</li> 
 
      </ul> 
 
    \t \t <i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw hidden"></i> 
 
    \t </div> 
 
    \t <input type="hidden" id="supplier-nonce" name="" value="93b8e7346b"> 
 
    \t <input type="hidden" id="product_supplier" name="supplier" value="bottle"> 
 
    </span>

Die Konsole Ausgänge

placeholderclick 
bottle 
726 
bottle 
string 
["[object Object]"]0: "[object Object]"length: 1__proto__: Array(0) 

Der typeof die supplierval Saite ist aber immer noch gespalten nicht funktioniert. Ich habe versucht, .toString() aus supplierarray zu entfernen, aber dann gibt es eine .split(); Funktion nicht gefunden Fehler. Ich weiß nicht, was das Problem ist.

Warum ist nicht Split an einem einfachen String arbeiten, der Typ ist auch String.

JSFIDDLE: https://jsfiddle.net/t3xn1v7m/

+0

Juts 'supplierarray = supplierval.split ("");' – Satpal

+0

Ja, wie Satpal sagte, der Grund, warum wir Sie den Text als einen Speicher string-Variable konvertiert diese Variable in ein JQuery-Objekt, das .toString() nicht weiß, was zu tun ist. – delinear

+0

'Warum wird nicht an einer einfachen Zeichenkette gespalten, deren typeof auch Zeichenkette ist. - Sie tun nicht' split' in einer einfachen Zeichenkette. Sie wickeln 'supplierval', die einfache Zeichenfolge, in ein jQuery-Objekt, nein, nicht mehr eine einfache Zeichenfolge. – Nope

Antwort

2

Sie erstellen jQuery-Objekt $() verwenden und dann das Objekt in einen String konvertieren .toString() verwenden.

Gerade.split() auf supplierval Variable

supplierarray = supplierval.split(","); 
+0

Das hat funktioniert. Danke vielmals. Ich bin schwach in jQuery. Wusste nicht, $ konvertiert eine Zeichenfolge in ein Objekt .. –