Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态生成jQuery选择器?_Javascript_Php_Jquery - Fatal编程技术网

Javascript 如何动态生成jQuery选择器?

Javascript 如何动态生成jQuery选择器?,javascript,php,jquery,Javascript,Php,Jquery,我有一个通过PHP/MySQL动态生成多个div的页面。div类名也是动态生成的 <div class="1er45">Test 1</div> <div class="25dd58">Test 2</div> <div class="87f77">Test 3</div> <div class="87fffas">Test 4</div> <div class="1er45">T

我有一个通过PHP/MySQL动态生成多个div的页面。div类名也是动态生成的

<div class="1er45">Test 1</div>

<div class="25dd58">Test 2</div>

<div class="87f77">Test 3</div>

<div class="87fffas">Test 4</div>

<div class="1er45">Test 1</div> 

<div class="25dd58">Test 2</div> 

<div class="87fffas">Test 4</div> 

<div class="8asdf">Test 5</div>

<div class="25dd58">Test 2</div> 

<div class="87fffas">Test 4</div> 

<div>...</div>
测试1
测试2
测试3
测试4
测试1
测试2
测试4
测试5
测试2
测试4
...
如何修改这个jQuery选择器以匹配上面所有动态生成的div类名?如果有多个div具有相同的类名,我只想显示第一个div

<script>
  $('.classname').not(':first').hide();
</script>

$('.classname')。不是(':first')。隐藏();

据我所知,您可能需要迭代所有
div
,并隐藏所有大于1的类名:

$( 'div[class]' ).each( function() {
  $( 'div.' + $( this ).attr( 'class' ).replace( /\s/g, '.' ) + ':gt(0)' ).hide();
});

我真的不明白动态生成类的意义


如果您知道这些“ID”的模式,您可以使用正则表达式捕捉它们。

假设在这些
中的每一个中只有一个类值,您可以在以下代码中实现您所要求的:

var $firstDiv = $("div:first");
var sFirstClass = $firstDiv.attr("class");

if ($("." + sFirstClass).length < 2) {
    $firstDiv.hide();
}
var$firstDiv=$(“div:first”);
var sFirstClass=$firstDiv.attr(“类”);
如果($(“+sFirstClass).length<2){
$firstDiv.hide();
}
该守则将:

  • 检索第一个
    div
  • 获取它的
    属性值
  • 检查是否有多个元素具有该
  • 隐藏第一个元素(如果没有)

  • 迭代每个div,计算每个类名的出现次数。然后,对于每个收集的类名,隐藏重复

    var classNames = {};
    $('div').each(function(){ 
        var c = $(this).attr('class'); 
        classNames[c] ? classNames[c]++ : classNames[c] = 1;
    });
    
    for (var c in classNames) { 
        if (classNames[c] > 1) 
            $('div.' + c).not(':first').hide();   
    }
    

    首先,您需要获得所有相关div的参考资料。。。有没有办法向每个div添加一个静态类?或者有一个父元素来查找其中的所有div吗?考虑到jquery选择器只不过是一个字符串,是的,您当然可以动态创建jquery选择器。但是,您必须事先知道要生成它的部件。尽管这可能是一个x/y问题,但生成动态jquery选择器可能是解决这个问题的错误方法。