Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
带有Jquery和php while循环的动态选择器_Php_Jquery_Dynamic_Click - Fatal编程技术网

带有Jquery和php while循环的动态选择器

带有Jquery和php while循环的动态选择器,php,jquery,dynamic,click,Php,Jquery,Dynamic,Click,我有一个while循环,它创建了一个锚点标记列表,每个锚点标记都有一个唯一的类名,从1到项目数量不等。我想改变一个css属性在一个特定的锚标签和类,当它被点击,所以让我们说背景颜色改变。这是我的密码 while($row = mysql_fetch_array($results)){ $title = $row['title']; $i++; echo "<a class='$i'>$title</a> } 可以对如下数组使用迭代器: var myclasses

我有一个while循环,它创建了一个锚点标记列表,每个锚点标记都有一个唯一的类名,从1到项目数量不等。我想改变一个css属性在一个特定的锚标签和类,当它被点击,所以让我们说背景颜色改变。这是我的密码

while($row = mysql_fetch_array($results)){
 $title = $row['title'];
 $i++;
 echo "<a class='$i'>$title</a>

}

可以对如下数组使用迭代器:

var myclasses = [".1",".2",".3"]; // generated by php

$.each(myclasses, function(index, value) { 
    $('a '+value).click(function() {
        $(this).css('background':'red');
    });
});

注意:我认为最好为锚定标记列表中的每个项目使用唯一ID,并让它们共享一个类。这就是类和ID的更多用途

你能给这个类一个更一致的名字吗?比如
myClass\u 1
myClass\u 2
,等等

然后你可以做:

$(document).ready(function() {
    $('a[class^=myClass_]').click(function() { // Assign handler to elements with a
                                               //  class that starts with 'myClass_'
        $(this).css('background','red');  // Change background of clicked one.

    });
});
这里,使用“开始于”选择器将事件分配给以
myClass
开始的所有类

如果需要,您仍然可以检索索引号

在事件处理程序中,
$(this)
指的是单击的事件处理程序

现场示例:

用于“从开始”选择器的文档:


编辑:选择器中缺少一个
]
。现在修复。

只需给他们相同的类,比如说,
myClass
。然后:

$('a.myClass').click(function () {
    $(this).css('background':'red');
});

只要链接在它们自己或它们的父母身上运行,只要链接和目标之间的关系对于每一个链接都是相同的,这就行了。要在父元素上操作,它将是
$(this).parent().css(…)
,要在下一个元素上操作,它将是
$(this).next().css(…)
,依此类推。

您尝试过类似的方法吗

while($row = mysql_fetch_array($results)){
 $title = $row['title'];
 $i++;
 echo '<a class="anchor_link" id="'.$i.'">'.$title.'</a>';

}
我添加js变量'thisAnchor'的原因是因为我假设您需要$I php变量作为锚标记?如果是这样的话,您可以使用jsvar并根据需要使用它。如果由于锚定内容由ID标记而无法使用ID,请使用不同的属性,如“title”或“alt”


我希望这会有所帮助。

我将使用ID而不是“唯一”类。无论单击了哪个链接,似乎都会执行相同的操作,所以为什么不给它们一个公共类呢。这就是类的用途,将类似的行为/属性分配给多个元素。我刚刚注意到的另一个错误(并在我的回答中更正)是,在
.css()调用中使用了
作为分隔符,而不是
。只有将对象传递到
.css()
时才使用冒号。我同意@Felix。除非类名作为数字有特定的用途(比如如果有其他元素具有相同的类名),否则ID通常用作唯一标识符(尽管单个数字作为ID无效),并且类可以是相同的。索引号也可以在自定义属性中传递。您不需要使用
each()
将处理程序分配给所有
myClass
元素。如果您引用$(this)@colinmarc,则没有理由为每个元素指定唯一的类-OP出于某种原因使用唯一的类,因此,我的回答反映了OP的要求。可能会生成具有相同类名的其他元素集。
while($row = mysql_fetch_array($results)){
 $title = $row['title'];
 $i++;
 echo '<a class="anchor_link" id="'.$i.'">'.$title.'</a>';

}
$(document).ready(function() {
    $('a.anchor_link').click(function() {
        var thisAnchor = $(this).attr('id');
        $(this).css('background':'red');
    });
});