Как передать переменную jQuery в свойство плагина?


Извините, я новичок, кто-нибудь может мне помочь?

<script>
var iW = $(document).width();

$(function() {
//single book
$('#mybook').booklet({
   next: '#custom-next',                
    prev: '#custom-prev',
     keyboard: true,
    width:   return iW, // here is the problem! It doesn't work.
    height: 200

});

//multiple books with ID's
$('#mybook1, #mybook2').booklet();

//multiple books with a class
$('.mycustombooks').booklet();

});

</script>
3 2

3 ответа:

return в этом нет необходимости. Вам просто нужно width: iW.

Тем не менее, вы также должны привести вызов к $(document).width() внутри блока ready.
$(function () {
    var iW = $(document).width();

    //single book
    $('#mybook').booklet({
        next: '#custom-next',
        prev: '#custom-prev',
        keyboard: true,
        width: iW,
        height: 200

    });

    //multiple books with ID's
    $('#mybook1, #mybook2').booklet();

    //multiple books with a class
    $('.mycustombooks').booklet();

});

Вы действительно близки. Просто бросьте return, например:

$('#mybook').booklet({
   next: '#custom-next',                
    prev: '#custom-prev',
    keyboard: true,
    width:   iW, // <=== Updated
    height: 200

});

, который будет использовать значение iW в момент вызова booklet.

Внутри объектного литерала (это то, что вы передаете в функцию booklet) инициализаторы свойств очень похожи на операторы присваивания. Бит слева перед : дает имя свойства (и не может быть выражением), а бит справа после : дает значение для свойство (и может быть выражением - простым именем переменной, вызовом функции и т. д.).

Как и выше, вы не нуждаетесь в возврате.

Но в качестве альтернативы многие плагины будут принимать функции для оценки их параметров, когда это необходимо, чтобы вы могли, например,

$('#mybook').booklet({
    next: '#custom-next',
    prev: '#custom-prev',
    keyboard: true,
    width: function() { return $(document).width(); },
    height: 200
});

Я не знаю этот плагин, поэтому я не уверен на 100%, что он будет поддерживать его, но многие это делают.