如何使用 jquery 在 laravel 中单击下拉菜单获取 li 的值?

How to get the value of li on dropdown menu click in laravel using jquery?

查看代码:

 @foreach($liveValues as $live)
 <tbody role="alert">
  <td>
  <ul>
     SKU:<li  id="skuvalue" >  {{$live->SKUID}}</li>
   </ul>
   </td>
  <div class="btn-group">
  <button type="button" class="btn btn-default editSellingAttributes" 
  data-toggle="modal" data-target="" data-id="{{$live->SKUID}}">Edit 
  Selling Attributes</button>
  <button type="button" class="btn btn-default dropdown-toggle" data-
  toggle="dropdown">
  <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
  <li><a href="{{url('editCatalogue')}}">Edit Catalogue</a></li>
  <li><a href="#">Archieve Listing</a></li>
  </ul>
  </div>
  </tbody>       
  @endforeach

这是 laravel 视图,我在其中列出了许多从数据库中获取的 skuid 值。在此旁边,我还列出了一个下拉菜单,其中包含“编辑目录”和“存档列表”。单击存档列表时,我需要获取该行中列出的 skuid

脚本代码:

<script type="text/javascript">
$(document).ready(function(){
var liveSKUID=$("#skuvalue").val();
alert(liveSKUID);
});

这是我试过的简单脚本,但它会提示“0”。

您正在查询 li,请使用 .text() 而不是 .val()

$(document).ready(function(){
    var liveSKUID=$("#skuvalue").text();
    alert(liveSKUID);
})

您在每个循环中生成相同的标记,导致多个 id=skuvalue 无效 HTML。 这意味着你不能使用 $(#skuvalue) 因为它总是 return 第一个匹配所以你必须 select 它的位置。

I would recommend to use data-id instead as you otherwise have multiple duplicates of a unique id

此外,您的示例标记在第一个 td.[=35= 之后的其余数据周围生成无效的 table,没有 trtd ]

假设您有一个有效的 HTML Table,下面是您可以如何操作的示例。如果您只想要点击带有文本 Archieve Listing 的特定 li 的响应,您需要给它一个属性或其他东西以将点击事件附加到它。

您可以调整位置并假设 li 始终处于第二位置,但这是不可靠的。当您生成标记时,添加 data-id="archive" 或类似的应该不是问题。

点击相关 li 后,您可以使用 jQuery closest('tr') 返回 DOM 树以到达当前行。从那里,您可以在匹配的 tr 上使用 .find() 来查找具有 id=skuvalue 的元素。我在下面的示例中使用了 select 或 [id="skuvalue"] 属性,但我认为 .find('#skuvalue') 也应该有效,因为您只在单个行的上下文中搜索。

$(".dropdown-menu [data-id=archive]").on('click', function() {
  var x = $(this).closest('tr').find('[id=skuvalue]').text();
  alert(x);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
  <tbody role="alert">
    <tr>
      <td>
        <ul>
          SKU:
          <li id="skuvalue">5</li>
        </ul>
      </td>
      <td>
        <div class="btn-group">
          <button type="button" class="btn btn-default editSellingAttributes" data-toggle="modal" data-target="" data-id="{{$live->SKUID}}">Edit 
  Selling Attributes</button>
          <button type="button" class="btn btn-default dropdown-toggle" data- toggle="dropdown">
  <span class="caret"></span>
  </button>
          <ul class="dropdown-menu" role="menu">
            <li><a href="#">Edit Catalogue</a></li>
            <li><a data-id="archive" href="#">Archieve Listing</a></li>
          </ul>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <ul>
          SKU:
          <li id="skuvalue">78</li>
        </ul>
      </td>
      <td>
        <div class="btn-group">
          <button type="button" class="btn btn-default editSellingAttributes" data-toggle="modal" data-target="" data-id="{{$live->SKUID}}">Edit 
  Selling Attributes</button>
          <button type="button" class="btn btn-default dropdown-toggle" data- toggle="dropdown">
  <span class="caret"></span>
  </button>
          <ul class="dropdown-menu" role="menu">
            <li><a href="#">Edit Catalogue</a></li>
            <li><a data-id="archive" href="#">Archieve Listing</a></li>
          </ul>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <ul>
          SKU:
          <li id="skuvalue">987</li>
        </ul>
      </td>
      <td>
        <div class="btn-group">
          <button type="button" class="btn btn-default editSellingAttributes" data-toggle="modal" data-target="" data-id="{{$live->SKUID}}">Edit 
  Selling Attributes</button>
          <button type="button" class="btn btn-default dropdown-toggle" data- toggle="dropdown">
  <span class="caret"></span>
  </button>
          <ul class="dropdown-menu" role="menu">
            <li><a href="#">Edit Catalogue</a></li>
            <li><a data-id="archive" href="#">Archieve Listing</a></li>
          </ul>
        </div>
      </td>
    </tr>
  </tbody>
  <table>

所以在这里,当您根据 $liveValue 的计数获取类似的 li 时。您需要做的第一件事是 id = skuvalue 将不起作用,因为 id's 用于整个页面中的单个值或单个元素。 所以我们需要 class 而不是 id

其次,我注意到您正在使用 val() 并且在您的 html 中没有 value attribute 设置为任何 li。如果您正在寻找 litext。您将使用 text() 而不是 val()

使用相同 Class :

var inputs = $(".something");
for(var i = 0; i < inputs.length; i++){
    alert($(inputs[i]).text());
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class = "something" value ="ok">
    hi
  </li>
   <li class = "something">
    is
  </li>
   <li class = "something">
    going to
  </li>
   <li class = "something">
    happen
  </li>
</ul>

但是如果你想使用 id

使用 ID 并单击元素

$("#myid li").click(function() {
    alert($(this).text()); // gets text contents of clicked li
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id='myid'>
  <li id='1'>skuID 1</li>
  <li id='2'>skuID 2</li>
  <li id='3'>skuID 3</li>
  <li id='4'>skuID 4</li>
  <li id='5'>skuID 5</li>
</ul>