Новое в jquery, проблемы с передачей аргументов для использования в селекторе - PullRequest
0 голосов
/ 10 января 2012

Мне нужна помощь в передаче аргументов в функцию jquery.У меня есть HTML-заголовок с

onclick="slide(#aboutit);"

, и я создал в заголовке функцию

<script type="text/javascript">
    function slide(element){
        var slid = element;
        slid.slideToggle("slow");
    }
</script>

по какой-то причине, которую я не понимаю, это не работает,Я могу заставить его работать, если вместо этого я использую

function slide(){
    $('#aboutit').slideToggle("slow");
}

, но я не хочу создавать новую функцию для скольжения для каждой части сайта.

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

Ответы [ 3 ]

2 голосов
/ 10 января 2012

Ваш код slide(#aboutit); недействителен.Вместо этого вы можете slide($('#aboutit')).

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

Я знаю, что вы уже приняли ответ, который исправил две проблемы с вашим кодом (строка без кавычек и тот факт, что ваша slide() функция ожидала объект jQuery, а не строку), но так как вы упомянули это:

Я не хочу создавать новую функцию для скольжения для каждой части сайта

Вместо кодирования onclick для каждого элемента, который вы хотите сдвинуть, где вы должны индивидуально указать идентификатор элемента, как в вашем текущем коде:

onclick="slide($('#elementid'));"

Ваш код будет намного проще и проще в обслуживании, если вы вместо этого назначите общий класс всем элементам (независимо от их типа), по которым вы хотите перемещаться, например:

<h1 class="slideMe">A heading</h1>
<div class="slideMe">A div</div>
<h2 class="slideMe otherclass">Note elements can have multiple classes</h2>
<p class="slideMe">And so on and so forth</p>

Потому что тогда вы можете применить функциональность слайдов к всем из них, написав одну строку кода, чтобы назначить обработчик кликов на основе этого класса. Должен быть в document.ready (или в конце тела):

$(document).ready(function() {
    $(".slideMe").click(function() {
         $(this).slideToggle("slow");
    });
});

Обратите внимание, что это чуть дольше, чем ваша существующая функция slide(). При нажатии на отдельный элемент он будет скользить. Легко.

Также обратите внимание, что если вы затем добавляете дополнительные элементы, которые должны скользить, вам не нужно присваивать им атрибут id, а затем сопоставлять onclick для вызова slide() с этим id, вы просто добавьте класс «slideMe», и это произойдет автоматически.

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

В jQuery вы используете функцию готовности документа для загрузки элементов при рисовании DOM. Затем поместите все элементы в функцию document.ready ().

<script type="text/javascript">
jQuery(document).ready(function() {


    $('#aboutit').slideToggle("slow");

    $('#anotherdiv').slideToggle("slow");

    $('#yetanotherdiv').slideToggle("slow");


});
</script>

Выше предполагается, что вы вызываете ядро ​​jquery перед запуском функции document.ready ().

Скорее всего, вам понадобится какая-то другая функция для slideToggle. В противном случае ваш контент просто скользит при загрузке страницы. Если это то, что вы хотите. отличный. Если вы хотите скользить по клику, вам нужно вызвать функцию щелчка:

<script type="text/javascript">
jQuery(document).ready(function() {


    $('#aboutit').click(function(){
       $(this).slideToggle("slow");
     });


});
</script>
...