Как создать функцию, используя JQuery Live? - PullRequest
0 голосов
/ 04 июня 2010

Я пишу функцию, которая хорошо держит пользователя в изображениях лайтбокса, пока он добавляет в корзину.

Когда вы щелкаете по любому изображению, оно хорошо увеличивается с помощью лайтбокса v2, поэтому, когда пользователь нажимает кнопку Добавить изображение, он обновляет страницу. Когда я спросил об этом при поддержке jcart, они сказали мне использовать jquery live, но я не знаю, как это сделать. Я попробовал этот код, но ничего не происходит:

        jQuery(function($) {

$('#button') 
    .livequery(eventType, function(event) { 
        alert('clicked'); // to check if it works or not
        return false; 
    }); 
 });

Я тоже использовал

jQuery(function($) {

$('input=[name=addto') 
    .livequery(eventType, function(event) { 
        alert('clicked'); // to check if it works or not
        return false; 
    }); 
 });

пока ничего не получалось.

для кода для создания этих изображений http://pasite.org/code/572

Я тоже пробовал:

function adding(form){
$( "form.jcart" ).livequery('submit', function() {var b=$(this).find('input[name=<?php echo $jcart['item_id']?>]').val();var c=$(this).find('input[name=<?php echo $jcart['item_price']?>]').val();var d=$(this).find('input[name=<?php echo $jcart['item_name']?>]').val();var e=$(this).find('input[name=<?php echo $jcart['item_qty']?>]').val();var f=$(this).find('input[name=<?php echo $jcart['item_add']?>]').val();$.post('<?php echo $jcart['path'];?>jcart-relay.php',{"<?php echo $jcart['item_id']?>":b,"<?php echo $jcart['item_price']?>":c,"<?php echo $jcart['item_name']?>":d,"<?php echo $jcart['item_qty']?>":e,"<?php echo $jcart['item_add']?>":f}                                        
});
 return false;                                          
}

и, кажется, добавляет к jcart, но все же обновляет

1 Ответ

1 голос
/ 04 июня 2010

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

Похоже, вы хотите сделать ajax-запрос, чтобы добавить товар в корзину и обновить его, отображаемый на сайте? Это было бы при отправке формы, и если jcart создается динамически, тогда да, live это ответ.

$('.jcart').live('submit', function() {
    // aggregate form elements into object and send via ajax
    // update the cart on the page, since we haven't reloaded the page the light box is still displayed
});

По поводу комментария:

Когда вы отправляете ajax-запрос, jquery принимает объект в качестве аргумента. Такие как $.post('urlToPostTo.php', { title: 'title of whatever', id: 5 } );

Сервер видит это так же, как:

<form id="myForm" action="uroToPostTo.php" method="POST" >
    <input type="text" name="title" value="title of whatever" />
    <input type="hidden" name="id" value="5" />
    <input type="submit" name="submit" value="submit" />
</form>

Так что, если вам нужно объединить входные данные формы в объект, есть несколько способов (даже несколько плагинов jquery, которые могут вам помочь). Примитивный путь будет:

var $form = $('#myForm'); // instead of finding myForm over and over, cache it as a variable to use
var objToSend = {};
objToSend.title = $form.find('input[name=title]').val();
objTosend.id =    $form.find('input[name=id]').val();
$.post( 'urlToPostTo.php', objToSend );

Более элегантное решение состоит в том, чтобы что-то проходило через все элементы формы и помещало их в объект для вас. Плагины типа http://docs.jquery.com/Plugins:Forms делают это немного проще.

Конечный результат - элементы формы вставляются в объект для отправки в ваш скрипт.

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