所以我有一个班级ngg-navigation
的div。我需要使用jQuery为它添加一个ID,因为我无法直接触摸HTML。这就是我所拥有的:
jQuery(function($){
$('.ngg-navigation').attr('id', 'ngg-navigation-id');
});
这在初始加载时工作正常,但是还有其他javascript执行AJAX并刷新div,导致ngg-navigation-id
ID消失。有没有办法在每次出现时添加ID?
答案 0 :(得分:2)
在评论中,您说要添加ID的唯一原因是CSS特异性。
您不需要ID,只需要使CSS选择器更具体。
而不是:
.ngg-navigation{
}
尝试通过在其之前添加父级来使其更具体。像:
#parent-element .ngg-navigation{
}
答案 1 :(得分:1)
只需将其转换为函数,并在需要时调用它:
function setId(){
$('.ngg-navigation').attr('id', 'ngg-navigation-id');
// you may want to consider this, as its faster:
// $('.ngg-navigation)[0].id = 'ngg-navigation-id';
}
你可以在页面加载时调用它(就像你正在做的那样),一个来自AJAX调用的回调,当你的猫晕倒......无论如何。
$(function(){
setId();
$.ajax({
...
success:function(){
setId();
}
});
});
这也假设您只有一个类ngg-navigation
的元素,否则您的HTML将无效。
您还可以通过执行参数使其更具可重用性:
function setId($item,newID){
$item.attr('id',newID);
// or the faster alternative:
// $item[0].id = newID;
}
电话:
setId($('.ngg-navigation'),'ngg-navigation-id');
这样你就可以传入任何其他jQuery对象/ ID配对,它会为你设置你的ID。只是值得深思。
答案 2 :(得分:0)
我想你可能想要添加一些代码,在每次刷新div时都会执行替换操作。
答案 3 :(得分:0)
正如其他人所提到的,id似乎是不必要的,因为你可以通过它的类名来引用元素。据推测,它是这个类的第一个或唯一的元素。您始终可以将其称为:
$('.ngg-navigation').first()
每当你需要使用这个元素时,你总是可以在那时添加id。
但是,如果您愿意,可以调查jQuery ajaxComplete,以便在Ajax请求完成时注册要调用的处理程序。
根据您最近的评论,如果您需要覆盖css,那么您可以使用jQuery来执行此操作,设置您需要的规则;这会覆盖当前的css。
答案 4 :(得分:0)
我猜你可以将你的DIV包装在另一个中,并将id应用于这个父DIV。
这样孩子DIV可以改变,但仍然可以使用$('#yourID')。find('。ngg-navigation')作为例子。
不确定此方法是否干净,但它应该可以很好地运行。