Jquery usercript нажимает переключатель, когда указанный текст находится на странице - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь создать пользовательский скрипт, который будет искать внутри div для конкретной текстовой строки, и, если он доступен, нажмите на определенный переключатель внутри этого конкретного div. Как правило, существует несколько div на страницу, каждый из которых должен быть обработан индивидуально Я пробовал различные сценарии с помощью next () и nextAll (), но я даже близко не подошел, чтобы заставить его работать. Любая помощь будет принята с благодарностью. Вот пример того, как кодируется целевая страница:

<div class="block">
   <div>
      <div class="place">Text to be searched
      </div>
      <div class="place">
         <div id="question">
             <input value="yes">
             <input value="no">
         </div>
      </div>
   </div>
</div>

Несколько раз, до 3. Я новичок в javascript / jquery. Может кто-нибудь указать мне направление, чтобы заставить что-то подобное работать? Спасибо!

Edit: Благодаря очень полезному комментарию, мне удалось заставить его работать именно так, как мне было нужно:

var arr = ['Keyword1', 'Keyword2', 'Keyword3'];
var i=0;
for (; i<arr.length; i++) {
$("div div.place.bg-dark:contains('"+arr[i]+"')").each(function() {
     $(this).nextAll().find('input[type=radio][value=2]').click();
    $(this).parent().parent().css("cssText", "border: 15px solid red !important;");
        });
}

1 Ответ

0 голосов
/ 08 мая 2018

Используйте .filter(), чтобы отфильтровать текстовые элементы div или вопрос, а затем используйте .next('div.place'), чтобы найти и отметить выбранную кнопку radio.

См. Демо ниже

var textToSearch = 'Text to be searched';
var valueToCheck='yes';

$(document).ready(function() {
  
  $(".block div.place").filter(function() {
    return $.trim($(this).text()) == textToSearch;
  }).next('div.place').find('input[type="radio"][value="'+valueToCheck+'"]').prop('checked', true);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="block">
  <div>
    <div class="place">Text to be searched</div>
    <div class="place">
      <div id="question">
        <input type="radio" value="yes">
        <input type="radio" value="no">
      </div>
    </div>
  </div>
  <div>
    <div class="place">Text to be searched
    </div>
    <div class="place">
      <div id="question">
        <input type="radio" value="yes">
        <input type="radio" value="no">
      </div>
    </div>
  </div>
</div>
...