Включить отключить привязку, Jquery - PullRequest
3 голосов
/ 06 октября 2011

Вот HTML:

<ul>
    <li><a href="http://xyz.com"><img src="./xyz.png"/></a></li>
    <li><a href="http://xyz.com"><img src="./xyz.png"/></a></li>
    <li><a href="http://xyz.com"><img src="./xyz.png"/></a></li>
    <li><a href="http://xyz.com"><img src="./xyz.png"/></a></li>

</ul>

Если я нажму второй li, он должен перейти по ссылке, но не если я нажму любой другой li.У меня есть этот код, я хочу знать, как включить действие по умолчанию.

 $(li[k]).click(function(){//increase the height});
 $(li[k]).find('a').click(function(e) {
    e.preventDefault();
    });

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Я бы предложил что-то вроде следующего:

 $(li[k]).click(function(){//increase the height});
 $(li[k]).find('a').click(function(e) {
        if ($(this).parent().index() != 1){
            e.preventDefault();
        }
    });

Способ, которым это работает, заключается в том, что если index() элемента li, по которому щелкнули, (на основе его положения среди его братьев и сестер)не равно 1 (массивы JavaScript начинаются с нуля, 1 - второй элемент массива), e.preventDefault() срабатывает;в противном случае (если index() равно равно 1), действие по умолчанию разрешено.

1 голос
/ 06 октября 2011

Если я правильно понимаю, вы хотите снова включить поведение по умолчанию для одной из ссылок?

Вы можете сделать это так:

$(li[k]).find('a').unbind("click");

Это удалит обработчик щелчка из выбранного элемента, по сути, вернув его к поведению по умолчанию.

...