Jquery addClass на радио-флажок отмечен - PullRequest
0 голосов
/ 16 апреля 2010

Я проверил все темы, но я просто не знаю, почему мой скрипт не работает: (

<script type="text/javascript">
$('input[name=pic]').click(function() {           
    $(this).closest('ul').find(".green").removeClass("green");

    if($(this).is(':checked'))  {
        $(this).closest('ul').find("li").addClass('green');
    }
});
</script>

another script what is making the li tags

var link = document.createElement('li');
var parts = result.tbUrl.split('::');
link.innerHTML = "<label for='asd"+i+"'><img src='"+result.tbUrl+"' /></label><br /><input id='asd"+i+"' type='radio' name='pic'  value='http://"+parts[1]+"' />";
contentDiv.appendChild(link);

etc...

<ul>
    <li><input type="radio" name="pic" value="asd"/>asd</li>
    <li><input type="radio" name="pic" value="b"/>asd</li>
    <li><input type="radio" name="pic" value="ba"/>asd</li>
    <li><input type="radio" name="pic" value="bs"/>asd</li>
    <li><input type="radio" name="pic" value="bc"/>asd</li>
</ul>   

Пожалуйста, помогите мне!

Ответы [ 2 ]

2 голосов
/ 16 апреля 2010

$('#pic') - это селектор идентификаторов, и у ваших входов нет идентификаторов. Вы, вероятно, имели в виду '$('input[name=pic]').

Кроме того, вы применяете класс green к <li>, но затем пытаетесь найти .green элементов внутри .parents('li'). Может быть, вы хотите $(this).closest('ul') вместо этого?

0 голосов
/ 16 апреля 2010

Бобинс правильный. Вам необходимо связать в $ (документ) .ready

Я также сделал скрипт более эффективным.

<script type="text/javascript">
    $(document).ready(function() {
        $(':radio[name=pic]').click(function() {           
            $(this).siblings().removeClass("green").end()
           .addClass("green"); //a click always makes a radio button true, so no need to check
        });
    });
</script>
...