как использовать селекторы jquery в цикле for?

#javascript #jquery

#javascript #jquery

Вопрос:

я хочу достичь этого :

 for (i = <?php echo $current_i ?> /*then I get augmented in javascript */;i<max;i  ){
$('#anyid****')./* my actions goes here */
}
  

здесь я хочу поместить счетчик I javascript в селектор
, как я мог это сделать???

Комментарии:

1. вы, должно быть, шутите? в php вы объединяете с. в javascript с помощью

2. спасибо, но я думаю, что мой вопрос ясен, и я нашел ответ

3. Как правило, вы не хотите запускать селекторы в цикле. Сделайте единый выбор всех элементов DOM, затем выполните /* my actions go here */ часть в наборе. Существует множество селекторов для размещения сложного выбора, подобного тому, что вы пытаетесь.

4. в моей ситуации я не могу использовать селекторы, о которых вы говорите, потому что у меня есть несколько divs с идентификаторами, и они влияют на некоторые входные данные с помощью OtherId, и моя проблема в том, что входные данные и divs дополняются скриптом (нажмите, чтобы добавить другой), тогда я не могу использовать $ (this) или любой$ (div)

Ответ №1:

Извините, я не знаю PHP, но я надеюсь, что вы хотели сделать что-то вроде приведенного ниже

 for (i = <?php echo $current_i ?> ;i<max;i  ){
$('#div' i)/*do the rest*/
}
  

для конкатенации, я надеюсь, что это то же самое в PHP. Также вы можете преобразовать i в string .

Просто для понимания OP

в строке 2 $('#div' i) i указан целочисленный тип, а другие $(#div) имеют тип string . Для jquery необходим строковый селектор для извлечения соответствующего узла dom, и для этого i его также необходимо преобразовать / преобразовать в строковую переменную, чтобы она могла объединять / добавлять / присоединять с префиксной строкой, которая есть в этом примере #div . в c # вы добавляете 2 строки, подобные этой var result = "#div" i.ToString(); , и я не знал эквивалента PHP для в c #, поэтому извините в начале поста. Теперь вы понимаете?

Комментарии:

1. я не уверен, что вы имеете в виду, но да, я хочу, чтобы селектор в jquery выбирал все больше идентификаторов

2. да, я понимаю, что эквивалент php равен <?php echo "div".(string)$i; ?>

Ответ №2:

 for (i = <?php echo $current_i ?> /*then I get augmented in javascript */;i<max;i  ){
    $('#anyid'   i)./* my actions goes here */
}
  

вы можете просто объединить его со строкой вашего селектора.

Ответ №3:

Это не очень похоже на jQuery. Предполагая, что элементы имеют идентификаторы с непрерывной частью и находятся в порядке, вы можете присвоить каждому элементу общий класс и использовать slice [docs] и each [docs]:

 $('.commonClass').slice(<?php echo $current_i ?>, max   1).each(...
  

Вы могли бы предложить лучшие решения, если бы подробнее рассказали о своей проблеме. Например. предоставление каждому элементу увеличивающегося идентификатора не кажется преднамеренным решением.

PS: Я бы тоже не стал помещать туда переменную PHP, может быть, сначала присвоить значение переменной JavaScript.

Ответ №4:

было бы намного чище, если бы вы разделили php и javascript следующим образом.

js_var.php

 <?php
    $phpvars = array(
        'max' => 12,
        'fop' => 22
    );

    function phpvar($key = NULL){ 
        global $phpvars;
        return ($key) 
            ? json_encode($phpvars[$key])
            : json_encode($phpvars);
    }
?>
  

использование

 <?php include('phpvars.php');?>
<script type="text/javascript">
    window.phpvars = <?=phpvar()?>;

    var max = phpvars.max;

    for (var i=0;i<max;i  ){
        console.log(i);
    }
    console.log(php);
</script>