JQuery работает с атрибутами title и src - PullRequest
0 голосов
/ 27 января 2011

Я после того, как скрипт, который будет щелкать по флажку, получит атрибут src для ввода, а затем пройдет через все остальные флажки и переключатели .each и удалит проверенный атрибут любого ввода, атрибут заголовка которого равен 'RQlevel' + this.src.Надеюсь, это достаточно ясно.

Вот моя попытка, однако она не верна.

function levels() {
   if ($(this).is(':not(:checked)').each(function()) {
        if($(':input').attr('title', 'RQlevel' + this.src) {
        $(':input').removeAttr('checked');
        });
   });    
} 

Рабочий пример на http://jsfiddle.net/V8FeW/

Ответы [ 2 ]

1 голос
/ 27 января 2011

Я думаю, что ваши ссылки на this запутаны. Если я правильно понимаю ваш вопрос, это должно сделать то, что вы хотите:

function levels() {
  var $this = $(this); // Cache a reference to the element that was clicked
  if ($this.is(':not(:checked)') { // Determine if the clicked element is checked
    $(':input').each(function() { // Loop through every input element
      // Here, 'this' is the current element in the loop and
      // '$this' is the originally clicked element.
      if (this.title === ('RQLevel' + $this.attr('src'))) {
        $(this).removeAttr('checked');
      }
    });
  }
}

Обновление:

Я должен был понять это раньше, но ваша основная проблема - использовать атрибут src в качестве основы для вашего сравнения. Атрибут src анализируется, поэтому при запросе его значение будет абсолютным URL-адресом. То есть вместо значения «2» у вас будет значение «http://example.com/2".». Итак, вы хотите использовать атрибут данных . пример.

Кроме того, вместо использования атрибута onclick для регистрации обработчика событий я связал обработчик с помощью метода jQuery .bind () . Вот обновленный JavaScript:

$(function() {
    $(':input').bind('click', function() {
        var src = $(this).data('src');

        if (!this.checked) {
            $('input:checked').each(function(){
                if (this.title === ('RQlevel' + src)) {
                    this.checked = false;
                }
            });
        }
    }); 
});
0 голосов
/ 27 января 2011

Попробуйте это:

function levels() {
    if (!this.checked) {
        var src = this.src;
        $('input:checkbox, input:radio').each(function(){
            if (this.title === 'RQlevel' + src) {
                this.checked = false;
            }
        });
    }
}

Обратите внимание, что это следует называть так:

$('#yourCheckbox').click(levels);

Обратите внимание, что это проверка, чтобы увидеть, является ли заголовок элемента RQlevel, за которым следует значение src исходного щелкающего элемента. Если это не то, что вам нужно, замените src в вызове each на this.src, чтобы проверить значение src текущего элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...