JQuery有趣的问题

时间:2014-04-02 06:42:34

标签: jquery ajax

这是我的代码:

.................
 remProduct: function(e, $a) {
        var orderObj = {
            pid:   $a.parents('li').find('input=[name=pid]').val(),
            pk_id: $a.parents('div.packet').attr('id') || $a.parents('div.section').attr('id'),
            isSideCart: !!$a.parents('div.packet').length
        };
        var callBack = function(json) {
            if (json.success) { 
                if ($("div.sidebar").length) {
                    $("div.sidebar").replaceWith(json.body)
                } else if ($("div.content").length) {
                    $("div.content").html(json.body);
                }
            }
            front.rebindSideCart();
        };
        $.post(this.getPath() + '/remove-product', orderObj, callBack, 'json');
    },
.................

我的想法是我在我的包中添加或删除产品。当我添加一个产品,之后我想删除它,它不起作用,而萤火虫告诉我这个错误:

  

错误:语法错误,无法识别的表达式:input = [name = pid]

但是如果我刷新它的工作页面。谁能解释我为什么? Thx提前!

3 个答案:

答案 0 :(得分:1)

您不需要在=input之后立即使用input=[name=pid]

pid: $a.parents('li').find('input[name=pid]').val(),

Attribute Equals Selector 的正确语法为:jQuery("[attribute='value']")

由于您的值只是一个普通字符串,因此您不需要将其包含在双引号内,但如果您的值包含任何元字符(例如!"#$%&'()*+,./:;<=>?@[\]^ {|}〜` )作为名称的字面部分,必须使用两个反斜杠进行转义:\\或用引号括起来。

答案 1 :(得分:1)

=之后你不需要input运算符。还要在引号中包含属性值。它应该是:

find('input[name="pid"]')
pid:

 pid:$a.parents('li').find('input[name="pid"]').val(),

答案 2 :(得分:1)

应该是input[name=pid]而不是input=[name=pid]

pid:   $a.parents('li').find('input[name=pid]').val(),
                   //--------------^ 
                   // remove = from this position as it is not a valid selector

<强>语法:

$("element[attribute='value']")

对于egs:

$("input[name='pid']")