0

我创建了一个 jquery 插件,现在我想将它绑定到由 php 脚本创建的 DOM 元素。

使用以下标记作为示例:

<div class="showcase_window">

<div id='mywhatever'></div>
<div id='mywhatever2'></div>
<div id='mywhatever3'></div>

</div>

这有效:

$(document).ready(function(){

    $('#mywhatever').showcase();
    $('#mywhatever2').showcase();
    $('#mywhatever3').showcase();
});

但是由于标记是由 php 脚本创建的,所以我试图让这样的事情起作用:

 $(document).ready(function(){

    $('.showcase_window').children().on('showcase');

  });

但我有点困惑......我知道'on'用于附加事件,但我不知道该怎么做......

非常感谢!

PS:插件如下:

 $.fn.showcase = function () {

     return this.each(function() {

      var $this = $(this);

      $this.find(".sc_itm_display").hover(function() {
            $this.find(".sc_img_front").stop(true,true).fadeOut("slow");
            }, function() {
        $this.find(".sc_img_front").stop(true,true).fadeIn("slow");
        });

    $this.find('.sc_color_select img').click(function() {

    var color_path_1 = $(this).attr("src").replace("color","1");
    var color_path_2 = $(this).attr("src").replace("color","2");

    $this.find('.sc_itm_display .sc_img_back img').attr("src",color_path_1);
    $this.find('.sc_itm_display .sc_img_front img').attr("src",color_path_2);

    });
    });
    };
4

2 回答 2

1

on将处理程序附加到事件。事件可以是用户操作或进程完成/失败等。

您不是附加事件而是附加函数,在这种情况下,jQuery 会为您完成。

$('.showcase_window').children()或者只是$('.showcase_window>div')包含由您的脚本创建的三个示例 div。

$('.showcase_window').children().showcase();(或更有效地$('.showcase_window>div').showcase();

showcase()将为这些 div 中的每一个执行一次。inside 将是 div ('mywhatever') 本身thisshowcase

于 2012-05-02T13:58:28.920 回答
1

如果您的 PHP 正在生成您想要操作的元素,请使用它来输出一个脚本,其中包含一串以逗号分隔的 id 值作为目标。然后将这些目标用于您的插件。

PHP 输出:

var target_ids = "#this, #that, #the_other";

在你的 jQuery 中:

$(target_ids).showcase();

或者,使用唯一的类来标记您想要定位的所有元素,而您不需要知道它们的 id。

$(".mywhatevers").showcase();
于 2012-05-02T13:58:36.147 回答