stopPropagation не останавливает родительское действие - PullRequest
0 голосов
/ 18 января 2012

Я помещаю ввод внутрь a-тега.И я хочу остановить ссылку при нажатии, чтобы изменить значение на входе.Вот так

html

<div id="contain">
    <a href="http://www.stackoverflow.com" target="_blank" id="link">
        <input id="clickme" type="text" value="1"></input> 
        Buy
    </a>
</div>

jquery

$('#clickme').focus(function(e){
    e.stopPropagation();
});

$('#clickme').click(function(e){
    e.stopPropagation();
});

jsfiddle: http://jsfiddle.net/GKvw3/1/
В результате он все еще идет на stackoverflow.com.Любые идеи, почему это.

РЕДАКТИРОВАТЬ Мой реальный сценарий состоит в том, что я получил разметку, как это ниже.Теперь, что я делаю, так это то, что когда кто-то щелкает где-нибудь внутри ТР, он берет ссылку href.Таким образом, проблема заключается в том, что отправка формы (не в разметке) вызовет ссылку ... там я хочу сделать то, что я объяснил выше, и именно поэтому я использую входные данные внутри ссылки в тесте.

<table>
    <tr>
    <td><a href="#">headline</a></td>
    ...
    <td><input type="submit" id="submitme" value="buy"/></td>
    </tr>
</table>

Ответы [ 2 ]

1 голос
/ 18 января 2012

Должно быть preventDefault():

$('#clickme').click(function(e){
    e.preventDefault();
});

Делать это в .focus() не актуально, нужно «отменить» только .click().

Обновленная скрипка .

0 голосов
/ 18 января 2012

Вы можете использовать return false;:

$('#clickme').click(function(e){
    return false;
});

См. Скрипку здесь.

Я обычно использую это, когда мне нужно делать то, что вы хотите.

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