leggere Recupera i dati booleani dall'attributo dei dati in jquery



creare un div con jquery (4)

Nel mio caso le soluzioni proposte non mi hanno aiutato quindi ho creato la mia funzione di conversione booleana usando jquery:

/**
* Convert a value into a boolean
* @param {Mixed} value The value to check convert into boolean
* @return {Boolean}
*/
var boolVal=function(value){
  var falseValues=['false',0,undefined,'0','no','null',null];

  if (typeof value === 'string' || value instanceof String){
      value=value.toLowerCase();
  }

  return $.inArray(value, falseValues) == -1
}

Quindi recupero il valore tramite il metodo attr jquery e lo passo così ad esempio:

boolVal($(href).attr('data-sidebar-sm-display'));

Inoltre puoi vederlo per te nella seguente demo:

var boolVal = function(value) {
  var falseValues = ['false', 0, undefined, '0', 'no', 'null', null];

  if (typeof value === 'string' || value instanceof String) {
    value = value.toLowerCase();
  }

  return $.inArray(value, falseValues) == -1
}

console.log("#1_true: " + boolVal($("#1_true").attr('data-boolean')))
console.log("#2_true: " + boolVal($("#2_true").attr('data-boolean')))
console.log("#3_true: " + boolVal($("#3_true").attr('data-boolean')))
console.log("#4_true: " + boolVal($("#4_true").attr('data-boolean')))
console.log("#5_true: " + boolVal($("#5_true").attr('data-boolean')))
console.log("#6_true: " + boolVal($("#6_true").attr('data-boolean')))
console.log("#7_true: " + boolVal($("#7_true").attr('data-boolean')))

console.log("#1: " + boolVal($("#1").attr('data-boolean')))
console.log("#2: " + boolVal($("#2").attr('data-boolean')))
console.log("#3: " + boolVal($("#3").attr('data-boolean')))
console.log("#4: " + boolVal($("#4").attr('data-boolean')))
console.log("#4: " + boolVal($("#no_data").attr('data-boolean')))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="1" data-boolean="false"></div>
<div id="2" data-boolean="0"></div>
<div id="3" data-boolean="null"></div>
<div id="no_data"></div>
<div id="4" data-boolean=false></div>

<div id="1_true" data-boolean=yes></div>
<div id="2_true" data-boolean="yes"></div>
<div id="3_true" data-boolean="true"></div>
<div id="4_true" data-boolean="1"></div>
<div id="5_true" data-boolean=1></div>
<div id="6_true" data-boolean="true"></div>
<div id="7_true" data-boolean="TRUE"></div>

L'idea di base è quella di definire quale attributo dati è considerato dalla logica "falso" e qualsiasi altra cosa è impostata come vera.

Sto cercando di recuperare un attributo dati di tipo Booleano da un elemento DIV html, tuttavia restituisce sempre false quando la stringa viene convertita in booleana.

HTML

<div id='test' data-return="true"></div>

JS

isreturn_str = $('#test').data('return');
isreturn = (isreturn_str === 'true');
if (isreturn) {
    document.write("It is true");
} else {
    document.write("It is false");
}

produzione

È falso

http://jsfiddle.net/neilghosh/494wC/


Answer #1

Sto usando jquery 2.1.0 e devo usare eval

// $('#test').attr("data-return");" doesn't works
eval($('#test').attr("data-return"));

Answer #2

"true" è internamente convertito in booleano (prova alert (typeof(isreturn_str)) ), quindi il tuo confronto === fallisce sul controllo del tipo.

Puoi chiamare .toString()

isreturn_str = $('#test').data('return').toString();

http://jsfiddle.net/494wC/8/


Answer #3

Il metodo jQuery .data() è intelligente nel riconoscere valori booleani e numerici e li converte nel loro tipo nativo. Quindi questo restituisce il valore booleano true , non "true" :

$('#test').data('return');

Se vuoi ottenere i dati grezzi (senza la conversione automatica dei dati), puoi usare .attr() :

$('#test').attr("data-return");

Vedi il caso di test di lavoro qui: http://jsfiddle.net/jfriend00/6BA8t/





html5