выберите раздел без определенного содержания - PullRequest
2 голосов
/ 21 марта 2011

Q:

У меня есть следующий случай:

Div содержит ссылку, я хочу просто выбрать div без ссылки, я имею в виду, что при нажатии на div, я хочу, чтобы конкретное действие отличалось от щелчка по ссылке.

структура, над которой я работаю: (firebug)

<div class ="rsAptContent"> sql <a class = "rsAptDelete" href = "#" style ="visibility: hidden;">Delete</a> </div>

код JQuery:

<script type="text/javascript">

    $(document).ready(function() {


    $(".rsAptContent").click(function(e) {
            ShowDialog(true);
            e.preventDefault();
        });

    });

    function ShowDialog(modal) {
        $("#overlay").show();
        $("#dialog").fadeIn(300);

        if (modal) {
            $("#overlay").unbind("click");
        }
        else {
            $("#overlay").click(function(e) {
                HideDialog();
            });
        }
    }

    function HideDialog() {
        $("#overlay").hide();
        $("#dialog").fadeOut(300);
    } 

</script>`

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

заранее спасибо

Ответы [ 4 ]

4 голосов
/ 21 марта 2011

Вы ищете что-то вроде кода stopPropagation ()?

$(".rsAptContent").click(function(e) {
            e.stopPropagation();
            ShowDialog(true);
            return false;
        });

    });

Это должно остановить выполнение ссылки.

http://api.jquery.com/event.stopPropagation/

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

    $(".rsAptContent").click(function(e) {
                var $target = $(e.target);
                if($target.is(a){
                  // It's the link.
                }else{
                  // else it's not
                }
            });
        });
3 голосов
/ 21 марта 2011

Проверьте, не выбран ли целевой элемент, а затем выполните действие

, чтобы получить информацию о том, какой элемент щелкните, используйте ниже script

function whichElement(event){
    var tname
    tname=event.srcElement.tagName
    alert("You clicked on a " + tname + " element.")
}
2 голосов
/ 21 марта 2011

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

$(".rsAptContent").click(function(e) {
        if($(e.target).hasClass('rsAptDelete')) return false;
        ShowDialog(true);
        e.preventDefault();
    });
});

Если целью является ссылка, событие отменяется;

1 голос
/ 21 марта 2011

Если у вас уже есть обработчик кликов по ссылке удаления, просто остановите распространение события, используя stopPropagation().

$(".rsAptDelete").click(function(e) {
    e.stopPropagation();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...