我有一个使用jquery-ui datepicker
的项目。这个日期选择器使用的是我想更改的较旧图标,以防将来更新时修改jquery-ui-{version}.js
的代码。
另外,我不能使用其他日期选择器,因为已经有很多与此日期选择器相关的工作,并且更改所有日期选择器绝对是浪费时间,并且可能会破坏当前的应用程序。
因为日期选择器是通过javascript创建的元素,所以我认为我可以使用事件DOMNodeInserted
来修改所需元素的类。
这是我写的代码:
$(document).on('DOMNodeInserted','div.ui-datepicker',function(e){
var element = e.target;
var prev = $(element).find('div.ui-datepicker-header').find('a.ui-datepicker-prev').find('span.ui-icon');
var next = $(element).find('div.ui-datepicker-header').find('a.ui-datepicker-next').find('span.ui-icon');
//The prev and next elements are not the ones i am looking for
$(prev).removeClass();
$(next).removeClass();
$(prev).empty();
$(prev).addClass('fas');
$(prev).addClass('fa-chevron-left');
$(next).empty();
$(next).addClass('fas');
$(next).addClass('fa-chevron-right');
});
正如我在代码中作为注释写的那样,上一个和下一个对象不正确。
只有第一个.find()
有效。当我在控制台上打印元素时,它会将元素div.ui-datepicker-header
打印为prev
和next
的元素。我尝试将检索分开,以便找出问题所在,但即使.find('a.ui-datepicker-prev')
也无法正常工作。没有错误,但是即使我正在使用它来查找其子级,它仍然可以检索父级。我尝试使用.children('a.ui-datepicker-prev')
,但没有任何改变。
触发我的是,如果我使用完全相同的代码并将其放在.on('DOMNodeInserted')
事件中之外的任何地方,那么它将起作用。我有点卡在这里,找不到一个有同样问题的人,如果有的话,请分享。
欢迎提出任何想法。
答案 0 :(得分:0)
var prev = $(element).find('div.ui-datepicker-header').find('a.ui-datepicker-prev').find('span.ui-icon');
var next = $(element).find('div.ui-datepicker-header').find('a.ui-datepicker-next').find('span.ui-icon')
应该
var prev = $(element).find('div.ui-datepicker-header a.ui-datepicker-prev span.ui-icon');
var next = $(element).find('div.ui-datepicker-header a.ui-datepicker-next span.ui-icon');