我可能會錯過一些東西很明顯這裏,提前道歉,如果這樣......使用jQuery單擊功能,在某些地方執行代碼,而不是在別人
使用Ajax-的Solr和實現我自己的用戶當前的搜索版本小部件示例/教程 - https://github.com/evolvingweb/ajax-solr/wiki/Reuters-tutorial%3A-step-5我有一段代碼,看起來像這樣:
(function($) {
AjaxSolr.CurrentSearchWidget = AjaxSolr.AbstractWidget.extend({
start: 0,
afterRequest: function() {
var self = this;
var links = [];
var q = self.manager.store.get('q').val();
var qText = q;
if (q != null && q != '*:*') {
if (q.split(':').length == 2) {
qText = q.split(':')[1];
}
links.push($('<a href="#" class="cur-search"></a>')
.text('search: ' + qText + ' (remove)').click(function() {
localStorage.removeItem("query");
localStorage.setItem("query", "*");
self.manager.store.get('q').val('*:*');
self.doRequest();
return false;
}));
}
var fq = self.manager.store.values('fq');
var prettyText = "";
for (var i = 0, l = fq.length; i < l; i++) {
//string manipulation for user-facing text
links.push($('<a href="#" class="cur-search"></a>')
.text(prettyText + ' (remove)').click(self.removeFacet(fq[i])));
//local storage stuff
}
if (links.length > 1) {
links.unshift($('<a href="#" class="cur-search"></a>')
.text('remove all').click(function() {
localStorage.clear();
localStorage.setItem("query", "*");
self.manager.store.get('q').val('*');
self.manager.store.remove('fq');
self.doRequest();
return false;
}));
}
//update DOM
},
我已經剝離出來的不必要的代碼,但上述工作正常。然而,如果我改變
links.push($('<a href="#" class="cur-search"></a>')
.text(prettyText + ' (remove)')
.click(self.removeFacet(fq[i])));
使用函數按照上面的實施例和下面,像
links.push($('<a href="#" class="cur-search"></a>')
.text(prettyText + ' (remove)')
.click(function() {
self.removeFacet(fq[i]);
}));
,這樣我可以添加有額外的代碼,它不再運行removeFacet錨時被點擊。感謝您對我失蹤的任何幫助!
一個範圍問題非常有意義,但不幸的是我似乎無法讓您的更改工作,我只是不斷收到一個jQuery「TypeError:m.push不是一個函數」,我似乎無法修復 –