我的問題很自我解釋 - 我正在寫一個jQuery插件,用戶指定一個選擇器。我需要檢查該選擇器是否存在,如果有,請執行一些代碼。但是,我無法弄清楚如何在我的jQuery插件中進行檢查。如何檢查jQuery插件中是否存在元素?
我需要這樣做,因爲我試圖創建類似jquery-readyselector(https://github.com/Verba/jquery-readyselector)與Turbolinks一起使用的東西。
我希望能夠使用的功能,像這樣:
$("#mySelector").pageReady(function() {
// This is only triggered if #mySelector exists.
console.log('test')
});
這裏是我的嘗試:
(function($) {
$.fn.pageReady = function(fn) {
var that = this;
$(document).on('ready page:load', function() {
if (that.length <= 0){
return
} else {
fn();
}
});
}
})(jQuery);
這樣做的問題是,that.length == 0,即使元素存在。
我也試圖定義功能的內部「準備頁:加載」,但我得到pageReady不是一個函數:
$(document).on('ready page:load', function() {
$.fn.pageReady = function(fn) {
if (this.length <= 0) {
return
} else {
fn();
}
}
});
請注意,我使用Turbolinks與Rails的,這就是爲什麼我有$(document).on('ready page:load' ...)
。用$(document).ready(...)
替換該行將在非Rails/Turbolinks應用中執行相同的操作。
你現在有什麼不對? – BenG
@BenG對不起!我應該包括這一點。我更新了OP - 基本上,即使元素存在,length也始終爲0。 – chintanparikh
當我在答案片段工具中測試它時,它工作正常。 – BenG