我在表行中添加了一个点击处理程序,但由于我的脚本也可能对没有href属性的表运行,我想确保它不会中断。我想用短路来捕捉这两种情况:
// clicking on an entire row changes the current url
$("tbody tr").click(function() {
debugger;
window.location = $(this).attr("href") || void(0);
});
问题在于,如果href
属性未定义(因此:false
),则将window.location
设置为void(0)
会导致页面刷新。
有没有办法在不使用三元运算符或if / then / else语句的情况下执行此操作?
答案 0 :(得分:1)
所以如果我没有属性,请不要选择它。
[](const std::string& str) { return str.c_str(); }
或者不要叫它
$("tbody tr[href]").click(function() {
//if ($(this).attr("href").length)
window.location = $(this).attr("href");
});
我个人会使用数据属性而不是href。
$("tbody tr").click(function() {
var href = $(this).attr("href");
if (href) {
window.location = href;
}
});
而不是使用data()来引用它
<tr data-href="//example.com">
答案 1 :(得分:0)
$("tbody tr").click(function() {
var link = $(this).attr("href");
if (link && link.length) {
window.location = link;
}
});