带有Jquery和php while循环的动态选择器
我有一个while循环,它创建了一个锚点标记列表,每个锚点标记都有一个唯一的类名,从1到项目数量不等。我想改变一个css属性在一个特定的锚标签和类,当它被点击,所以让我们说背景颜色改变。这是我的密码带有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($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');
});
});