-1

如何将 .delegate 方法应用于这行 jquery?

$(function() {
    $("input[type='checkbox']").on('change', function() {
        if (this.checked) {
            $(".loadingItems").fadeIn(300);
            var color = encodeURI(this.value);
            $(".indexMain").load('indexMain.php?color=' + color, function() {
                $(".indexMain").fadeIn(slow);
            });
            $(".loadingItems").fadeOut(300);
        } else {
            $(".loadingItems").fadeIn(300);
            $(".indexMain").load('indexMain.php', function() {
                $(".loadingItems").fadeOut(300);
            });
        }
    });
});

形式:

echo "<input type='checkbox' class='regularCheckbox' name='color[]' value='".$colorBoxes[color_base1]."' /><font class='similarItemsText'>   ".$colorBoxes[color_base1]."</font><br />";

PHP接收颜色:

$color = $_GET['color'];
$items = $con -> prepare("SELECT * FROM item_descr WHERE color_base1 = :colorbase1");
        $items -> bindValue(":colorbase1", $color);
while($info = $items->fetch(PDO::FETCH_ASSOC)) 
{ ....

我需要允许在复选框集中进行多项选择。

4

3 回答 3

1

现在您已经向我们展示了更多关于您真正想要做什么的信息,您将不得不更改代码的工作方式,并且.delegate()对于解决该问题没有用处。

现在,您在构建将使用的 URL 时只检查一个复选框的值indexMain.php。相反,您需要在构建该 URL 时检查所有选中复选框的值。

您没有说在选中多个复选框时要如何构造 URL,但在结构上,代码将如下所示:

$(function() {
    $("input[type='checkbox']").on('change', function() {
        var colors = [];
        $("input[type='checkbox']:checked").each(function() {
            colors.push(this.value);
        });
        if (colors.length) {
            $(".loadingItems").fadeIn(300);
            $(".indexMain").load('indexMain.php?color=' + colors.join("+"), function() {
                $(".indexMain").fadeIn(slow);
            });
            $(".loadingItems").fadeOut(300);
        } else {
            $(".loadingItems").fadeIn(300);
            $(".indexMain").load('indexMain.php', function() {
                $(".loadingItems").fadeOut(300);
            });
        }
    });
});

This code will produce a URL for the .load()command like this when one or more colors are selected:

indexMain.php?color=blue+yellow+green+orange

如果没有选择颜色,它将indexMain.php不带其他参数调用。

由您的服务器代码来解析来自 URL 的颜色并创建所需的响应。

于 2012-08-12T21:40:23.580 回答
0
$(document).on('change', 'input[type=checkbox]', function() {
   // code
});

使用 jQuery.on()你可以做到这一点。

的语法.on()

$(static_parent).on( eventName, target, handlerFunction);

其中static_parent表示非动态容器,target并且target是绑定事件的元素。

于 2012-08-12T19:34:03.003 回答
0

委托可以写成如下

$("table").delegate("td", "click", function(){$(this).toggleClass("chosen");});

并且可以使用 latest(可从 jquery 1.7 获得) on() 来实现同样的事情,如下所示

$("table").on("click", "td", function(){$(this).toggleClass("chosen");});
于 2012-08-12T20:07:23.073 回答