Assistant Quantity Surveyor
Assistant Quantity Surveyor chez N/A à Nairobi.
window.notificationMessages = []; Help us serve you better & stand to win a $200 Samsung phone & data bundles! Complete a short survey here Complete survey Help us serve you better & stand to win a $200 Samsung phone & data bundles! Complete a short survey here Complete survey Verify Employer Account Now Activate let hasCheckedBrowserAlert = false;
function bannerSlider(initialBanners = []) { return { banners: Array.isArray(initialBanners) ? initialBanners : [], activeSlide: 1, timer: null, hydrated: false,
init() { this.hydrated = true;
this.$nextTick(() => { this.deferLoop();
});
},
loop() { if (this.banners.length > 1 && !this.timer) { this.timer = setInterval(() => { this.activeSlide = (this.activeSlide % this.banners.length) + 1;
}, 5000);
} },
deferLoop() { if (this.banners.length this.loop();
if ("requestIdleCallback" in window) { requestIdleCallback(start, { timeout: 6000 }); } else { setTimeout(start, 5000); } },
pause() { if (this.timer) { clearInterval(this.timer); this.timer = null; } },
resume() { this.deferLoop(); },
resetLoop() { if (this.timer) { clearInterval(this.timer); this.timer = null; } this.deferLoop(); },
setSlide(num) { this.activeSlide = num; this.resetLoop(); },
nextSlide() { if (!this.banners.length) return;
this.activeSlide = this.activeSlide === this.banners.length
? 1
: this.activeSlide + 1;
this.resetLoop(); },
prevSlide() { if (!this.banners.length) return;
this.activeSlide = this.activeSlide === 1 ? this.banners.length : this.activeSlide - 1;
this.resetLoop(); },
addBanner(banner) { const alreadyExists = this.banners.some( b => b.banner_type === banner.banner_type, );
if (!alreadyExists) { this.banners.unshift(banner); } },
deferBrowserAlertBanner() { const run = () => this.showBrowserAlertBanner();
if ("requestIdleCallback" in window) { requestIdleCallback(run, { timeout: 8000 }); } else { setTimeout(run, 6000); } },
showBrowserAlertBanner() { const maxRetries = 10; const retryInterval = 300;
const browserAlertBanner = {
icon: "speakerphone",
banner_text: Authorise this browser to receive instant browser alerts.,
banner_cta_event: "onesignal_subscribe",
banner_type: "browser_alert",
};
return new Promise((resolve) => { let retries = 0;
const interval = setInterval(() => { if (typeof window.checkIfHasOnesignalPlayerId === "function") { clearInterval(interval);
if (!hasCheckedBrowserAlert) { hasCheckedBrowserAlert = true;
window.checkIfHasOnesignalPlayerId((result) => { if (result) { this.addBanner(browserAlertBanner); resolve(browserAlertBanner); } else { resolve(false); }
});
} else { resolve(false); } } else { retries++;
if (retries >= maxRetries) { clearInterval(interval); resolve(false); } } }, retryInterval);
});
},
hideBrowserAlertBanner() { this.banners = this.banners.filter( banner => banner.banner_type !== "browser_alert", ); this.activeSlide = 1; }, }; } Find a Job + + + + Search const TopSearch = { handleSubmit: function (event) { event.preventDefault(); event.stopPropagation();
const form = event.target;
const getValue = (name) => { if (form[name]) { if (form[name].type) { if (["select-one", "text", "hidden"].indexOf(form[name].type) > -1) { return form[name].value; } if (["checkbox", "radio"].indexOf(form[name].type) > -1 && form[name].checked) { return form[name].value; } } else if (form[name].length) { return form[name].value; } }
return ""; };
const experienceLevel = getValue("experience[]") || getValue("experience"); const jobFunction = getValue("job_function[]") || getValue("job_function"); const industry = getValue("industry[]") || getValue("industry"); const location = getValue("location[]") || getValue("location"); const workType = getValue("work_type"); const term = getValue("q"); const sortBy = getValue("sort_by");
// If the logged in user is authenticated
// Append authenticated value to make url unique/different to logged out url
// same action is happening in SearchFilterViewComposer
// line 589 in the multiSearchFilterHref function
const authenticated = document.getElementById("authenticated").value;
let toUrl = "";
if (industry.trim() && jobFunction.trim()) {
const segments = [jobFunction, location, workType].filter((x) => x);
toUrl = ${segments.join("/")}?industry=${industry};
} else {
const segments = [jobFunction, industry, location, workType].filter((x) => x);
toUrl = segments.join("/");
}
if (experienceLevel) {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}experience=${experienceLevel};
}
if (term.trim()) {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}q=${encodeURI(term.replace(" ", "+"))};
}
if (sortBy.trim()) {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}sort=${sortBy};
}
if (authenticated === "true") {
toUrl += ${toUrl.indexOf("?") === -1 ? "?" : "&"}authenticated=${Date.now()};
}
const wholeUrl = ${form.getAttribute("action")}/${toUrl.toLocaleLowerCase()};
window.location.assign(wholeUrl.replace(//$/, ""));
return false; }, }; Homepage Engineering & Technology Construction Nairobi Full Time Quantity Surveyor Quantity Surveyor Intex Construction Limited Engineering & Technology 1 week ago Easy apply New Featured Nairobi Full Time Construction KSh 75,000 - 90,000 Share link Share on
[Click the Apply button below to see the contact details]
Never pay money to get an interview. Taf4All will never contact you to request application fees.
Assistant Quantity Surveyor chez N/A à Nairobi.
Quantity Surveyor Surge Staffing Solutions Friday, 29 May 2026 1129136447 Verified Ad Engineering Civil Engineering Sout
JOB SUMMARY Preparing cost estimates, budgets, cost planning, checks, cost control and advice on all project works. JOB
Surveyor chez N/A à Nairobi.