jQuery ID Selector动态

时间:2009-11-04 02:13:26

标签: php javascript jquery dynamic

不确定如果可以这样做,我接近它的方式。这没什么。我正在回复来自php上传脚本的图片,每个img都有一个唯一的ID,从A1,A2,A3,A4等开始。现在我可以选择那个img ID并创建我想要的动作,但是我必须为每个ID做这个,我不能在创建新的时候这样做,我怎么告诉jQuery对A1做同样的事情( A2,A3)某种增量。

JS

$(document).ready(function(){
   $("#1 ").hover(
   function(){
    $("#A1").slideDown();
   },

   function(){
     $("#A1").slideUp();
   });
});

$(document).ready(function(){
   $("#2 ").hover(

   function(){
     $("#A2").slideDown();
   },
   function(){
     $("#A2").slideUp();
   });
});

PHP

$i= 0; while(($file = $myDir->read()) !==false){
  if(!is_dir($file)){
    $i++;
    //echo "Filename: $file<br/>";
    echo "<div id='images'>";
    echo "<p>";
    echo "<a id='$i'href=\"display/$file\"><img src=\"thumbs/$file\" /> </a>\n";
    echo "</p>";
    echo"</div>";
    echo "<div id='imageHolder' >";
    echo "<img id='A$i' style='display:none' src=\"display/$file\" />";
    echo"</div>";
  }
}

3 个答案:

答案 0 :(得分:2)

您的新商品是如何生成的?在页面加载时,还是通过jQuery使用ajax请求?在任何一种情况下,您都可以选择以某种方式开始的所有元素(即“A”):

$("a").hover(
    function(){
        $(this).find(img[id^='A']).slideDown();
    },
    function(){
        $(this).find(img[id^='A']).slideUp();
});

如果我离开这里,有人可以随时帮助我。

<强>更新

谢谢你们 - 这样的事情怎么样?

$("a").hover(
    function(){
        id = $(this).attr('id');
        $("#A"+id).slideDown();
    },
    function(){
        id = $(this).attr('id');
        $("#A"+id).slideUp();
});

这将查找页面上的所有链接,并使用ID(根据您的代码)查找幻灯片项目。如果你是动态创建它们,你会想把它放在一个函数中并在ajaxComplete上再次调用它。

答案 1 :(得分:1)

我会有一个包含所有对象ID的javascript数组。然后你可以循环遍历数组,并为每个id完成你想要做的工作。

答案 2 :(得分:0)

将jQuery.live()用于“永久”事件处理程序(如果您正在向页面动态添加图像)或使用jQuery.each()迭代所有实例。

最后它会是这样的(不使用直播事件):

$("a:has(img.my_image)").each(function(){
    $(this).hover(
        function(){$(this).slideDown();},
        function(){$(this).slideUp();}
    );
});