当未定义值时,短路window.location而不触发刷新

时间:2017-04-04 12:25:59

标签: javascript jquery

我在表行中添加了一个点击处理程序,但由于我的脚本也可能对没有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语句的情况下执行此操作?

2 个答案:

答案 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;
        }

    });