jQuery, как установить клик по href в div? - PullRequest
2 голосов
/ 18 мая 2010

Добрый день,

Я хочу установить событие click для каждого элемента привязки в моем контейнере div. Вот пример того, что я хочу сделать:

---HTML---
<div id="my-container">
    <a href="page1.html">page1</a>
    <a href="page2.html">page2</a>
    <a href="page3.html">page3</a>
</div>

---- jQuery ----
$("#my-container a").click(function() {
    var link = $(this).attr("href");
    $("#my-container").load(link);
});

Что я хочу сделать, так это разрешить мне обработать событие загрузки кликов href и загрузить его в тот же контейнер. И это должно быть сделано без идентификатора, атрибуты класса , которые недоступны для этой ссылки. Проблема в следующем: $ ("# my-container a") . Любая помощь будет оценена! Спасибо

UPDATE

Люди, кажется, не понимают, что я хотел спросить. Я повторяюсь снова. $ ("# my-container a") <---- не добавляет события щелчка на якорях href. Итак, как я могу установить событие клика? </p>

Ответы [ 5 ]

6 голосов
/ 18 мая 2010

Попробуйте, не уверен, что вы пропустили какие-либо теги, поэтому я добавил все это:

<script type="text/javascript">
     $(document).ready(function(){
        $("#my-container a").click(function(event) {
            alert('test');
            var link = $(this).attr("href");
            $("#my-container").load(link);

            event.preventDefault();
        });
     });

</script>
1 голос
/ 18 мая 2010

Вы забыли процитировать строковый литерал href:

var link = $(this).attr("href");
                        ^    ^

Кроме того, вам необходимо отменить поведение по умолчанию для события click. В настоящее время ваш обработчик событий сработает, но вы не увидите результат, поскольку браузер продолжает переходить по ссылке, по которой вы щелкнули. Добавьте return false; в качестве последней строки функции обработки событий, чтобы отменить это поведение.

0 голосов
/ 18 мая 2010

Вы пробовали это с функцией bind:

$("#my-container a").bind("click", function() {
    var link = $(this).attr("href");
    $("#my-container").load(link); 
});
0 голосов
/ 18 мая 2010

Добавить return false;.

$("#my-container a").click(function() {
    var link = $(this).attr("href");
    $("#my-container").load(link);
    return false;
});
0 голосов
/ 18 мая 2010

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

$(function(){
    $("#my-container > a").click(function() {
        var link = $(this).attr('href');
        $('#my-container').load(link);
        return false;
    });
});

Но если вы имели в виду, что вы не хотите давать div any id или class, то это повлияет на любые div, имеющие ссылки внутри. Таким образом, вы должны по крайней мере дать id div, в который вы хотите загрузить контент.

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