2014-03-27 67 views
-1

我需要帮助,因为我找不到错误的方式。我有这样的代码:每个就像使用带有变量的jQuery选择器

datosPre:

datosPre[0]='TipoViaFact=Paseo'; 
datosPre[1]='ProvinciaFact=3'; 

$.each(datosPre, function(key, value) { 
      var tempArray = value.split('='); 
      if (tempArray[0] == 'TipoViaFact' || tempArray[0] == 'ProvinciaFact') { 
       var tx0 =tempArray[0].toString(); 
        console.log(tx0); 
       var tx1 =tempArray[1].toString();   
        console.log(tx1); 
        console.log("selector:"+"[name="+tx0+"] option[value="+tx1+"]"); 
       var txs =$("[name='"+tx0+"'] option[value="+tx1+"]").text(); 
       //$("[name='"+tx0+"'] option[value="+tx1+"]").attr('selected','selected'); 
        console.log(txs); 
      } 
}); 

console.log(txs)回报empty字符串。我使用.text()测试,但我需要选择加入“.attr('selected','selected');”,而不是.text();

我一直在使用Firebug的控制台来代替自己在TXS选择的增值经销商试图和它的作品,但不是在这里。

我在这里阅读了几篇文章,并且我以这种方式跟踪了这些例子。

有人可以帮助我吗?

+1

为什么你不只是调试呢?将结果与HTML(您未在此问题中显示)进行比较将会轻松得多。 – raina77ow

+0

请注意,如果您可以自由选择用于存储预选数据的格式(您似乎这么做),那么使用JS对象代替字符串数组是有益的,就像在[本演示](http:// jsfiddle)中一样。净/ P9k6q /)。 – raina77ow

+0

最后,你在DOM加载时调用了这个,对吧?因为否则它是一个相当微不足道的问题。首先, – raina77ow

回答

0

检查了这一点

<script src="http://code.jquery.com/jquery-latest.min.js" 
     type="text/javascript"></script> 

<script> 
var datosPre = new Array(); 
datosPre[0]='TipoViaFact=Paseo'; 
datosPre[1]='ProvinciaFact=3'; 

$.each(datosPre, function(key, value) { 
      var tempArray = value.split('='); 
      if (tempArray[0] == 'TipoViaFact' || tempArray[0] == 'ProvinciaFact') { 
       var tx0 =tempArray[0].toString(); 
        console.log(tx0); 
       var tx1 =tempArray[1].toString();   
        console.log(tx1); 
        console.log("selector:"+"[name="+tx0+"] option[value="+tx1+"]"); 
       var txs =$("[name='"+tx0+"'] option[value="+tx1+"]").text(); 
       //$("[name='"+tx0+"'] option[value="+tx1+"]").attr('selected','selected'); 
        console.log(txs); 
      } 
}); 
</script> 
0

你缺少引号包围value在selector.try此属性值。

 var txs =$("[name='"+tx0+"'] option[value='"+tx1+"']").text(); 
    console.log(txs); 

,并选择该选项:

 $("[name='"+tx0+"'] option[value='"+tx1+"']").prop('selected', true); 
+0

如果'tx0'和'tx1'是有效的标识符,则不需要引号 - 在第一种情况下它们是。 – raina77ow

+0

@ raina77ow:这是否意味着它不会出现在名称值选择器中? –

+0

@ raina77ow它是正确的,我用引号试过,没有引号,我得到了同样的结果。 – davidrmolla