jQuery | Выбор класса из нескольких, имеющих определенный текст в промежутке

y <- if (x < 5) 1 else 2 не работает на весь вектор (предупреждение, которое вы получаете, указывает, что будет использоваться только первый элемент условия). Вы хотите ifelse:

y <- ifelse(x < 5, 1, 2)

ifelse работает по всему логическому вектору, поэтапно. if принимает только одно логическое значение. См. ?"if" и ?ifelse

0
задан mplungjan 13 July 2018 в 08:13
поделиться

3 ответа

Вы можете использовать : contains () Selector для достижения цели. Вам действительно не нужны разные методы, которые вы можете сделать для вас.

// Selection of Time Slots

var price = $(".master > .abc > .cost > label");

var timeSlots = $(".master > .abc > .time > span").text();
var timeArray = timeSlots.split('NonStop');
var highestPrice = 0;
var hPriceStr = "";
var resultArray = new Array();
for (var i = 0; i < timeArray.length; i++) {
  var bar = /(^06|^07|^08|^09|^10|^11)/;
  if (bar.test(timeArray[i])) {
    var sp = $(price[i]).text().split("₹")[1];
    var tempPrice = Number(sp.replace(",", ""));
    if (highestPrice < tempPrice) {
      highestPrice = tempPrice;
      hPriceStr = sp;
    }
    resultArray.push(timeArray[i]);
  }
};



var selector = ".master > .abc > .cost > label:contains('₹" + hPriceStr + "')"
$(selector).css("background", "#ff9900");
//console.log(highestPrice);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="master">
  <div class="abc">
    <div class="time"><span>06:05 NonStop</span></div>
    <div class="cost"><label class><span>₹2,987</span><label></div>
    	</div>
    	<div class="abc">
    		<div class="time"><span>03:05 NonStop</span></div>
    		<div class="cost"><label class><span>₹4,976</span><label></div>
    	</div>
    	<div class="abc">
    		<div class="time"><span>07:05 NonStop</span></div>
    		<div class="cost"><label class><span>₹8,976</span><label></div>
    	</div>
    	<div class="abc">
    		<div class="time"><span>08:15 NonStop</span></div>
    		<div class="cost"><label class><span>₹1,976</span><label></div>
    	</div>
    	<div class="abc">
    		<div class="time"><span>15:45 NonStop</span></div>
    		<div class="cost"><label class><span>₹9,976</span><label></div>
    	</div>
    </div>

1
ответ дан Ullas Hunka 17 August 2018 в 13:22
поделиться
  • 1
    Привет @Ullas Hunka ожидание составляет 8 976, поскольку это самая высокая цена в временных интервалах между 06:00 - 12:00. 9, 9976 - это стоимость временного интервала 15:45, я не хочу смотреть за пределы 12:00 – Ambika Tewari 13 July 2018 в 08:29
  • 2
    @AmbikaTewari Пожалуйста, дайте мне знать, если это сработает. – Ullas Hunka 13 July 2018 в 08:43

Я думаю, что наилучшей практикой для использования в этом случае является: при рендеринге html добавьте атрибут к элементу span.

example:

<div class="abc">
    <div class="time"><span intime="0305">03:05 NonStop</span></div>
    <div class="cost"><label class><span>₹4,976</span><label></div>
</div>

, затем

var timeSlots = $(".master > .abc > .time > span").each(function(i, e){
    var time = $(this).attr('intime');
    if( parseInt(time) > 0600 && parseInt(time) < 1200)
    {
        resultArray.push( $(this).val() );
    }
};
0
ответ дан Burhan Ibrahimi 17 August 2018 в 13:22
поделиться

Привет, парень, я думаю, вы можете использовать объект массива и легкий вес кода

var arrdata = [];

$.each($(".abc"), function (index, data) {
       arrdata.push(
       {
         index : index ,
         time: $(".abc:eq("+index+") > .time  span").text() , 
         price: $(".abc:eq("+index+") > .cost span").text().split("₹")[1] 
       });                             
      
});
var maxdata= [];
$.each(arrdata, function (index, data) {
  if (index === 0 )   
  {
    maxdata = arrdata[index]; 
  
  }
  else 
  {
     if (arrdata[index].price > maxdata.price )
     {
      maxdata = arrdata[index];
     
     }
   }
 
})
console.log(maxdata);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="master">
  <div class="abc">
    <div class="time"><span>06:05 NonStop</span></div>
    <div class="cost"><label class><span>₹2,987</span><label></div>
    	</div>
    	<div class="abc">
    		<div class="time"><span>03:05 NonStop</span></div>
    		<div class="cost"><label class><span>₹4,976</span><label></div>
    	</div>
      <div class="abc">
    		<div class="time"><span>15:45 NonStop</span></div>
    		<div class="cost"><label class><span>₹9,976</span><label></div>
    	</div>
    	<div class="abc">
    		<div class="time"><span>07:05 NonStop</span></div>
    		<div class="cost"><label class><span>₹8,976</span><label></div>
    	</div>
      
    	<div class="abc">
    		<div class="time"><span>08:15 NonStop</span></div>
    		<div class="cost"><label class><span>₹1,976</span><label></div>
    	</div>
    	
    </div>
Этот код может помочь вам

0
ответ дан Wara Haii 17 August 2018 в 13:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: