如何获得clicked元素的href值?

时间:2016-11-02 11:12:16

标签: javascript html confirm

这是我的代码:

std::ostringstream some_value_sstr;
some_value_sstr << std::hex << some_value;

std::ostringstream tmp;
for (std::size_t i = 0; i < 4; ++i)
{
  tmp << (char)std::stoi(some_value_sstr.str().substr(i * 2, 2), 0, 16);
}
std::cout << std::hex << pe_file_content.find(tmp.str()) << std::endl;

注意到我使用this library作为<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdn.rawgit.com/makeusabrew/bootbox/master/bootbox.js"></script> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> <a onclick="return bootbox.confirm('are you sure?', function(e){ if (e) {window.location = this.href;} });" href="/Remove-Post/{{ $tb }}/{{$post->id}}" data-toggle="modal" data-target="#confirm-delete">Link</a>

但是这行在我的代码中不起作用:

confirm

它总是(当我点击确定重定向我:

window.location = this.href;

我该如何解决?

5 个答案:

答案 0 :(得分:2)

<a onclick="return bootbox.confirm('are you sure?', function(e){ if (e) {window.location.href = $(this).attr('href');} });" href="/Remove-Post/{{ $tb }}/{{$post->id}}" data-toggle="modal" data-target="#confirm-delete">

而不是onClick你可以做这样的事情。

<a id="some-id" href="/Remove-Post/{{ $tb }}/{{$post->id}}" data-toggle="modal" data-target="#confirm-delete">
$('#some-id').click(function(){
    var link = $(this).attr('href');
    bootbox.confirm('are you sure ?', function(e){
      if(e){
         window.location.href = link;
       }
    })
})

答案 1 :(得分:1)

在您的代码中this.href无法正常工作,因为this正在引用bootbox对象,而且最后一个没有href属性:

我建议您使用一个用于显示对话框的常用功能,并且可以使用相同的方式将每个功能重定向到一个网址。并通过将其作为参数传递来动态设置对话框标题,

这是一个片段:  (我已用conosle.log替换了location.href以防止重定向...)

&#13;
&#13;
function redirect(node,message) {
  if(!message) message ="";
  return bootbox.confirm(message, function(e){ if (e) {
    // we use console instead of redirecting directly 
    console.log(node.href);
    // location.href = node.href; 
  } });
}
&#13;
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet"/>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
<script src="http://github.com/makeusabrew/bootbox/releases/download/v4.4.0/bootbox.min.js"></script>



<a onclick="redirect(this,'are you sure ?');" href="http://www.google.com" data-toggle="modal" data-target="#confirm-delete">link 1</a>
<br>
<a onclick="redirect(this,'leave the page  ?');" href="http://www.bing.com" data-toggle="modal" data-target="#confirm-delete">link 2</a>
<br>
<a onclick="redirect(this,'are you sure to leave !! ?');" href="http://www.yahoo.com" data-toggle="modal" data-target="#confirm-delete">link 1</a>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用此代码,如果您单击是,它会弹出一个然后它将进一步处理,否则保持在同一页面上。 试试这个。

<a onclick="return confirm('Are you sure you want to delete this?');" href="/Remove-Post/{{ $tb }}/{{$post->id}}" data-toggle="modal" data-target="#confirm-delete">

答案 3 :(得分:0)

Bootbox是第三方插件。您无法在bootbox确认回调函数内访问此指针。在使用bootbox确认回调中的局部变量之后,必须首先在本地变量中保存this.href,然后再调用bootbox。

<a onclick="NavigatePage()" href="/Remove-Post/{{ $tb }}/{{$post->id}}"/>

function NavigatePage(){
   var URL = this.href;  
   bootbox.confirm('are you sure?', function(UserResponse){
    if (UserResponse) {
      window.location = URL
    } 
   });
 }

在您的情况下,您将获得未定义,因为您正在访问bootbox回调函数中的this对象。在回调this对象内部无法访问。

答案 4 :(得分:-3)

this.ref在函数范围内? 两年前写了我最后一行JS ......

编辑: 我记得,问题是返回值。如果它不是flase。它将移动到href位置。

没有你的图书馆,但你可以改编它:

&#13;
&#13;
<a onclick="if(confirm('are you sure?')) { alert(this.href);};return false;" href="/Remove-Post/{{ $tb }}/{{$post->id}}" data-toggle="modal" data-target="#confirm-delete">Click me</a>
&#13;
&#13;
&#13;

编辑2: 在愚蠢地投票之前,你应该尝试代码。它有效。